{VERSION 6 0 "IBM INTEL NT" "6.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 35 "" 0 1 104 64 92 1 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "_cst yle67" -1 256 "Courier" 1 12 255 0 0 1 0 1 0 2 1 2 0 0 0 1 }{PSTYLE "N ormal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Text Output" -1 6 1 {CSTYLE " " -1 -1 "Courier" 1 10 0 0 255 1 2 2 2 2 2 1 2 1 3 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Output" -1 11 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 1 0 1 0 2 2 0 1 } {PSTYLE "Maple Output" -1 12 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "List Item" -1 14 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 3 3 1 0 1 0 2 2 14 5 }{PSTYLE "Normal" -1 256 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "_pstyle135" -1 257 1 {CSTYLE "" -1 -1 "Courier" 1 12 255 0 0 1 2 1 2 2 1 2 1 1 1 1 }1 1 0 0 0 0 2 0 2 0 2 2 0 1 }} {SECT 0 {EXCHG {PARA 0 "" 0 "" {TEXT -1 75 "This is a source file for \+ the package RJgrobner file RJgrobner_07_M12.mws\n\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 513 "RJgrobner:=module()\n############################### ####\nexport maxdegree,maxtotaldegree,homogenize,Spoly,Gbasis,GbasisL, minimalGbasis,maxmindegree,\nreducedGbasis,completelyreducedGbasis,RJv ersion,reducepol,condition,condition2,condition3,\nRadicalMembership,r eduction,SumOfIdeals,ProductOfIdeals,IntersectionOfIdeals,LeastCommonM ultiple,\nGreatestCommonDivisor,QuotientOfIdeals,Beziercubic,implicitB eziercubic,curvature;\n###################################\nlocal setu p;\noption package, load=setup;\n#option package;\n" }}{PARA 0 "" 0 " " {TEXT -1 11 "0. Version\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 1063 "RJ version:= proc()\noptions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revised: Dece mber 20, 2008`;\nprint(`+++++++++++++++++++++++++++++++++++++++++++`); \nprint(`RJgrobner - A Maple 12 Small Package for Grobner Bases`); \np rint(`Last revised: December 20, 2008 (Source file: RJgrobner_07_M12.m ws)`);\nprint(`Copyright 2006-2009 by Rafal Ablamowicz (*) and Jane Li u ($)`);\nprint(``);\nprint(`(*) Department of Mathematics, Box 5054`) ;\nprint(` Tennessee Technological University, Cookeville, TN 38505 `);\nprint(` tel: USA (931) 372-3622, fax: USA (931) 372-6353`);\np rint(` rablamowicz@tntech.edu`);\nprint(` http://math.tntech.edu /rafal/`);\nprint(`($) Department of Civil and Environmental Engineeri ng`);\nprint(` Tennessee Technological University, Cookeville, TN 3 8505`);\nprint(` tel: USA (931) 372-3256, fax: USA 372-6239`);\npri nt(` jliu@tntech.edu`);\nprint(` http://math.tntech.edu/rafal/`) ;\nprint(``);\nprint(`++++++++++++This is RJgrobner for Maple 12 versi on 7++++++++++++`);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 203 "1. P rocedure 'reducepol' reduces the given polynomial by dividing it by it s content, that is, it returns the polynomial divided by the greatest \+ common divisor of its coefficients:\n\nUsage: \nreducepol(f);\n" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 284 "reducepol:=proc(f::polynom) local \+ p:\noptions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revised: December 20, 2008` ;\n################################################################### #################\nf/icontent(f);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 620 "2. Procedure Spoly computes an S-polynomial for any two \+ monomials/polynomials specified as the i-th entry F[i] and the j-th en try F[j] in the list F, a basis of some ideal I, for the given monomia l order T entered as the third argument, for example, plex(t,z,y,x) o r lexdeg([x],[y,z]) (see below). It computes the remainder of the divi sion of the S-polynomial with respect to the basis F of I specified as the second argument. The procedure normally returns an updated basis \+ for the ideal. If used with a fourth optional parameter 'spoly', it re turns the S-polynomial only. \n\nRecall that Maple uses these term or ders:\n" }}{PARA 14 "" 0 "" {TEXT -1 2 "- " }{TEXT 35 17 "tdeg(v_1,... ,v_p)" }{TEXT -1 31 " to denote a total degree order" }}{PARA 14 "" 0 "" {TEXT -1 2 "- " }{TEXT 35 33 "wdeg([w_1,...,w_p],[v_1,...,v_p])" } {TEXT -1 34 " to denote a weighted degree order" }}{PARA 14 "" 0 "" {TEXT -1 2 "- " }{TEXT 35 17 "plex(v_1,...,v_p)" }{TEXT -1 37 " to den ote a pure lexicographic order" }}{PARA 14 "" 0 "" {TEXT -1 2 "- " } {TEXT 35 35 "lexdeg([v_1,...,v_p],[w_1,...,w_q])" }{TEXT -1 31 " to de note an elimination order" }}{PARA 14 "" 0 "" {TEXT -1 2 "- " }{TEXT 35 27 "'matrix'(mat,[v_1,...,v_p])" }{TEXT -1 38 " to denote a matrix- defined term order" }}{PARA 14 "" 0 "" {TEXT -1 2 "- " }{TEXT 35 10 "u ser(P, L)" }{TEXT -1 4 " or " }{TEXT 35 13 "user(P, Q, L)" }{TEXT -1 37 " to denote a user-defined term order." }}{PARA 0 "" 0 "" {TEXT -1 78 "\nUsage:\nSpoly(1,2,F,plex(t,z,y,x),'spoly');\nSpoly(1,2,F,lexdeg( [t],[z,y,x]));\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 648 "Spoly:=proc(i: :posint,j::posint,F::list(polynom),T::\{MonomialOrder,ShortMonomialOrd er\}) local FF,r,S:\noptions `Copyright (c) 2006-2009 by Rafal Ablamow icz and Jane Liu. All rights reserved.`;\ndescription `Last revised: D ecember 20, 2008`;\n################################################## ##################################\nFF:=F:\nS[i,j]:=Groebner:-SPolynom ial(FF[i],FF[j],T);\nif nargs=5 then \n if type(args[5],symbol) then return S[i,j] else\n error `the fifth argument, when used, must \+ be a symbol 'spoly'` end if;\nend if;\nr:=Groebner:-Reduce(S[i,j],FF,T );\nif r<>0 then FF:=[op(FF),r] end if;\nreturn map(RJgrobner:-reducep ol,FF);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 840 "3. Procedure \"G basis\" computes a Groebner basis for the given ideal I generated by s ome polynomials [f1,f2,...,fr] entered as the first argument F with re spect to some monomial order T entered as the second argument. It uses procedure Spoly to compute the S-polynomials S(fi,fj), 1 <= i < j, an d then the remainder of the division of S(fi,fj) with respect to the l ist F and the selected monomial order. If the reminder is not zero, th e list F gets updated by the reminder. If the reminder is zero, the li st is not changed. This way, the S-polynomials are computed and then r educed w.r.t. to F until every S-polynomial for any two polynomials in S produces a zero remainder when reduced. Then, the procedure returns a Groebner basis for the ideal I for the given monomial order.\n\nUsa ge:\nGbasis(F,plex(t,z,y,x));\nGbasis(F,lexdeg([x],[y,z]));\n" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 834 "Gbasis:=proc(F::list(polynom),T:: \{MonomialOrder,ShortMonomialOrder\}) local Floc,N,N2,i,j,flag1,flag2; \noptions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu. A ll rights reserved.`;\ndescription `Last revised: December 20, 2008`; \n#################################################################### ################\n### Warning: This is a very inefficient code!\n##### ###################################################################### #########\nFloc:=F:\nN:=nops(Floc);\nflag1:=evalb(N>1);\ni:=1:\nwhile \+ flag1 do\n flag2:=true:\n N:=nops(Floc);\n for j from i+1 while fla g2 do\n Floc:=RJgrobner:-Spoly(i,j,Floc,T);\n N2:=nops(Floc) ;\n flag2:=evalb(j " 0 "" {MPLTEXT 1 0 331 "GbasisL:=proc(G::list(polynom),L::list) local p;\nop tions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu. All r ights reserved.`;\ndescription `Last revised: December 20, 2008`;\n### ###################################################################### ###########\nreturn map(RJgrobner:-reducepol,remove(has,G,L));\nend pr oc:\n" }}{PARA 0 "" 0 "" {TEXT -1 240 "5. Procedure minimalGbasis comp utes a minimal Groebner basis from the given Groebner basis G (first a rgument) and for the given monomial order T (second argument).\n\nUsag e:\nminimalGbasis(Gx,plex(z,y,x));\nminimalGbasis(Gx,lexdeg([z],[y,x]) );\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 716 "minimalGbasis:=proc(G::lis t(polynom),T::\{MonomialOrder,ShortMonomialOrder\}) local keepinG,i,p, lp,Gp,lGp,r,co;\noptions `Copyright (c) 2006-2009 by Rafal Ablamowicz \+ and Jane Liu. All rights reserved.`;\ndescription `Last revised: Decem ber 20, 2008`;\n###################################################### ##############################\nkeepinG:=[]:\nfor i from 1 to nops(G) \+ do\n p:=G[i];\n lp:=Groebner:-LeadingMonomial(p,T);\n Gp:=remove(me mber,G,\{p\}):\n lGp:=map(Groebner:-LeadingMonomial,Gp,T);\n r:=Groe bner:-Reduce(lp,lGp,T);\n if r<>0 then \n co:=Groebner:-Lead ingCoefficient(p,T);\n p:=p/co;\n keepinG:=[op(keepi nG),p] \n end if;\nend do:\nreturn map(RJgrobner:-reducepol,keepinG); \nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 213 "6. Procedure reducedGba sis computes a reduced Groebner basis from the given minimal Groebner \+ basis Gmin (first argument) and for the given monomial order T (second argument).\n\nUsage:\nreducedGbasis(G,plex(z,y,x));\n" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 597 "reducedGbasis:=proc(Gmin::list(polynom),T::\{ MonomialOrder,ShortMonomialOrder\}) local Gminp,g,Gming,gp,co;\noption s `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu. All right s reserved.`;\ndescription `Last revised: December 20, 2008`;\n####### ###################################################################### #######\nGminp:=[]:\nfor g in Gmin do\n Gming:=remove(member,Gmin, \{g\});\n gp:=Groebner:-Reduce(g,Gming,T);\n if gp<>0 then\n \+ co:=Groebner:-LeadingCoefficient(gp,T);\n Gminp:=[op(Gminp),g p/co]\n end if;\nend do;\nreturn map(RJgrobner:-reducepol,Gminp);\n end proc: \n" }}{PARA 0 "" 0 "" {TEXT -1 241 "7. Procedure completelyr educedGbasis computes a completely reduced Groebner basis from the giv en reduced Groebner basis Gred (first argument) and for the lex order \+ T (second argument).\n\nUsage:\ncompletelyreducedGbasis(reducedGx,plex (z,y,x));\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 904 "completelyreducedGb asis:=proc(Gred::list(polynom),T::\{MonomialOrder,ShortMonomialOrder\} ) local p,l,flag,Lloc,Lnop,r,keep,order;\noptions `Copyright (c) 2006- 2009 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescrip tion `Last revised: December 20, 2008`;\n############################# ########################################################\nif not membe r(op(0,T),\{plex\}) then error `monomial order must be plex` end if;\n ###################################################################### ###############\nkeep:=[]:\nLloc:=Gred:\nl:=combinat[permute]([op(1..n ops(T),T)]);\nfor p in Lloc do\n Lnop:=remove(member,Lloc,\{p\});\n \+ flag:=true:\n for order in l while flag do\n r:=Groebner:-Reduce (p,Lnop,T);\n if r=0 then flag:=false end if;\n end do:\nif flag then \n keep:=[op(keep),expand(p*Groebner:-LeadingCoefficient(p, T))] \nend if; \nend:\nreturn map(RJgrobner:-reducepol,keep);\nend pro c:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 178 "8. Procedure 'condition' computes a polynomial that gives a normal line \+ to a planar curve defined implictly as f1 = f1(x0,y0) = 0 at a point ( x0,y0).\n\nUsage:\n\nf3:=condition(f1);\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 734 "condition:=proc(f1::polynom) local m:\noptions `Copy right (c) 2006-2009 by Rafal Ablamowicz and Jane Liu. All rights reser ved.`;\ndescription `Last revised: December 20, 2008`;\n############## ###################################################################### #############\nif nops(indets(f1)) < 2 then error `polynomial in two v ariables x0 and y0 was expected as input` end if:\nif not evalb(\{x0,y 0\} subset indets(f1)) then \n error `indeterminates x0 and y0 were \+ expected in the input polynomial` \nend if:\n######################### ###################################################################### ##\nm:=subs(\{y=y0,x=x0\},subs(y(x)=y,solve(diff(subs(\{y0=y(x),x0=x\} ,f1),x),diff(y(x),x)))):\nnumer(normal((x-x0)+m*(y-y0)));\nend proc:\n " }}{PARA 0 "" 0 "" {TEXT -1 358 "9. Procedure 'condition2' computes a polynomial that gives a normal line to a planar curve defined paramet rically X = X(t) and Y = Y(t) via two polynomials of t.\n\nUsage:\nFor example, we can define Bezier cubic parametrically as \n\nX:=simplify (((1-t)^3*x1+3*t*(1-t)^2*x2+3*t^2*(1-t)*x3+t^3*x4));\nY:=simplify(((1- t)^3*y1+3*t*(1-t)^2*y2+3*t^2*(1-t)*y3+t^3*y4));\n" }}{PARA 0 "" 0 "" {TEXT -1 82 "and an equation of a circle of radius r located at a poin t (X,Y) on the cubic as \n" }}{PARA 0 "" 0 "" {TEXT -1 24 "f3:=(y-Y)^2 +(x-X)^2-r^2;" }}{PARA 0 "" 0 "" {TEXT -1 66 "\nwhere (x,y) represent \+ coordinates of a point on the circle. Then " }}{PARA 0 "" 0 "" {TEXT -1 23 "\nf4:= condition2(X,Y); " }}{PARA 0 "" 0 "" {TEXT -1 124 "\nwil l be a polynomial that gives the equation of a normal line to the cubi c. Polynomial f4 will contain variables x,y and t." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 728 "condition2:=proc(f 1::polynom,f2::polynom) local Xp,Yp:global X,Y;\noptions `Copyright (c ) 2006-2009 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\n description `Last revised: December 20, 2008`;\n###################### ###################################################################\n# if not evalb(member(t,indets(f1)) and member(X,indets(f1))) then \n# \+ error `indeterminates in f1 must include X and t` end if:\n#if not ev alb(member(t,indets(f2)) and member(Y,indets(f2))) then \n# error `i ndeterminates in f2 must include Y and t` end if: \n################## ###################################################################### #\nXp,Yp:=simplify(diff(f1,t)),simplify(diff(f2,t));\nreturn (x-X)*Xp+ (y-Y)*Yp;\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 289 "10. Procedure \+ 'condition3' computes coordinates x,y,z, of a point located along a li ne normal to the surface defined parametrically as X=x(s,t), Y=y(s,t), Z=z(s,t) with a running parameter u along the line. \nUsage:\n\nX:=2* sin(s)*cos(t);\nY:=2*sin(s)*sin(t);\nZ:=2*cos(s);\n\ncondition3(X,Y,Z) ;\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 766 "condition3:=proc(X::algebra ic,Y::algebraic,Z::algebraic) local R0,V1,V2,N,R:\noptions `Copyright \+ (c) 2006-2009 by Rafal Ablamowicz and Jane Liu. All rights reserved.`; \ndescription `Last revised: December 20, 2008`;\n#################### ###################################################################### #######\n### Computes cooordinates x,y,z of a point located\n### along a line normal to the surface defined\n### parametrically as X=X(s,t), Y=Y(s,t), Z=Z(s,t)\n### with a running line parameter being 'u'\nR0:= ;\nV1:=map(diff,,s);\nV2:=map(diff,,t);\nN:=Linea rAlgebra:-CrossProduct(V1,V2);\nN:=map(expand,matrix(3,1,['u'*N[1],'u' *N[2],'u'*N[3]]));\nR0:=convert(R0,matrix);\nR:=evalm(N+R0);\nexpand(x -R[1,1]),expand(y-R[2,1]),expand(z-R[3,1]);\nend proc:\n" }}{PARA 0 " " 0 "" {TEXT -1 122 "11. Procedure 'maxdegree' computes a total degree of the given multivariate polynomial f for the given monomial order T .\n " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 513 "maxdegree:=proc(f::polynom ,T::\{MonomialOrder,ShortMonomialOrder\}) local degrees,c,m,L,ff;\nopt ions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu. All ri ghts reserved.`;\ndescription `Last revised: December 20, 2008`;\n#### ###################################################################### #######################\nff:=expand(f):\nc,m:=Groebner:-LeadingTerm(ff ,T);\nif nops(indets(m))>1 then\n L:=[op(m)];\n degrees:=`+`(op(ma p(degree,L)));\nelse\n degrees:=degree(m);\nend if;\nreturn degrees; \nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 195 "12. Procedure 'maxtotal degree' returns maximum total degree of a multivariate polynomial. It \+ uses any monomial order to just sort monomials for the purpose of comp utation of maximum total order.\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 603 "maxtotaldegree:=proc(f::polynom,T::\{MonomialOrder,ShortMonomialO rder\}) local degrees,c,m,L,ff;\noptions `Copyright (c) 2006-2009 by R afal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Las t revised: December 20, 2008`;\n###################################### ###########################################################\nff:=expan d(f):\ndegrees:=[]:\nwhile ff<>0 do\nc,m:=Groebner:-LeadingTerm(ff,T); \nif nops(indets(m))>1 then\n L:=[op(m)];\n degrees:=[op(degrees), `+`(op(map(degree,L)))];\nelse\n degrees:=[op(degrees),degree(m)];\n end if;\nff:=ff-c*m;\nend do;\nreturn max(op(degrees));\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 134 "13. Procedure 'maxmindegree' returns t he highest and the lowest degree of a multivariate polynomial f for th e given monomial order T.\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 620 "max mindegree:=proc(f::polynom,T::\{MonomialOrder,ShortMonomialOrder\}) lo cal degrees,c,m,L,ff;\noptions `Copyright (c) 2006-2009 by Rafal Ablam owicz and Jane Liu. All rights reserved.`;\ndescription `Last revised: December 20, 2008`;\n################################################ #################################################\nff:=expand(f):\ndeg rees:=[]:\nwhile ff<>0 do\nc,m:=Groebner:-LeadingTerm(ff,T);\nif nops( indets(m))>1 then\n L:=[op(m)];\n degrees:=[op(degrees),`+`(op(map (degree,L)))];\nelse\n degrees:=[op(degrees),degree(m)];\nend if;\nf f:=ff-c*m;\nend do;\nreturn [max(op(degrees)),min(op(degrees))];\nend \+ proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 134 "14. Procedure 'homogenize' ho mogenizes polynomial f for the given order T using a new indeterminate 'h' entered as the last argument.\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 642 "homogenize:=proc(f::polynom,T::\{MonomialOrder,ShortMonomialOrd er\},h::\{name,symbol\}) local fh,ff,m,L,deg,c,maxdeg,mondeg;\noptions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revised: December 20, 2008`;\n######## ###################################################################### ###################\nmaxdeg:=RJgrobner:-maxtotaldegree(f,T);\nfh:=0:\n ff:=expand(f):\nwhile ff<>0 do\nc,m:=Groebner:-LeadingTerm(ff,T);\nif \+ nops(indets(m))>1 then\n L:=[op(m)];\n mondeg:=`+`(op(map(degree,L )));\nelse\n mondeg:=degree(m);\nend if;\nfh:=fh+c*m*h^(maxdeg-monde g);\nff:=ff-c*m;\nend do;\nfh;\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 57 "15. Radical membership algorithm (page 176 in Cox et al.)" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 7 "Given: " } }{PARA 0 "" 0 "" {TEXT -1 34 "1. Polynomial f in k[x1,x2,...,xn]" }} {PARA 0 "" 0 "" {TEXT -1 94 "2. Polynomials f1,f2,...,fs that generate ideal I will be entered as a list F = [f1,f2,...,fs]" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 10 "Algorithm:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 135 "1. Compute reduc ed Groebner basis GB for the ideal J = with resp ect to any ordering, ex., plex(t,y, x1,x2,...xn)." }}{PARA 0 "" 0 "" {TEXT -1 214 "2. Check whether GB = \{1\} or not. If GB = \{1\} then f belongs to radical of I; otherwise f does not belong to radical of I. \n\nUsage:\n\nf1:=x*y^2+2*y^2;\nf2:=x^4-2*x^2+1;\nF:=[f1,f2];\nf:=y-x^ 2+1;\nRadicalMembership(f,F);\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 500 "RadicalMembership:=proc(f::polynom,F::list(polynom)) local J,yy,GB,va rs;\noptions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu . All rights reserved.`;\ndescription `Last revised: December 20, 2008 `;\n################################################################## ###############################\nJ:=[op(F),1-yy*f]:\nvars:=sort(conver t(\{op(map(op@indets,F))\},list));\nvars:=[yy,op(vars)];\nGB:=Groebner :-Basis(J,plex(op(vars)));\nif GB=[1] then return true else return fal se end if;\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 624 "16. Computati on of f_red, or, the reduction of f per Proposition 12 on page 179 in \+ Cox et al..\n\nGiven: \n\n1. A field k that contains the rational numb ers, e.g., R, C.\n2. Polynomial f in the ring k[x1,x2,x3] that generat es a principal ideal I = .\n\nAlgorithm (formula on page 179):\n\n1 . Compute GCD(f, f1, f2,..., fn) where fi is the derivative of f w.r.t . xi, i=1,...,n.\nRecall that GCD(f, f1, f2,..., fn) can be computed a s follows: \n\nGCD(f, f1, f2,..., fn) = GCD(GCD(GCD(GCD(f,f1),f2),f3), .....fn)\n\nNOTE: Here we use Maple's Gcd command instead of defined b elow GreatestCommonDivisor.\n\n2. Divide f/GCD(f, f1, f2,..., fn).\n" }}{PARA 0 "" 0 "" {TEXT -1 58 "Usage:\n\nf:=(x+2*y)^3*(2*x-y+z)^6*(x+z ^2)^3;\nreduction(f);\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 564 "reducti on:=proc(f::polynom) local vars,n,PD,ff1,i,q:\noptions `Copyright (c) \+ 2006-2009 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\nde scription `Last revised: December 20, 2008`;\n######################## ###################################################################### ###\nvars:=sort([op(indets(f))]);\nn:=nops(vars):\nPD:=map(factor@expa nd,[seq(diff(f,vars[i]),i=1..n)]);\nff1:=evala(Gcd(f,PD[1]));\nif n=1 \+ then return ff1 end if:\nfor i from 2 to n do\n ff1:=evala(Gcd(ff1, PD[i]))\nend do:\ndivide(f,ff1,'q');\nreturn RJgrobner:-reducepol(q); \nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 107 "17. Computation of a su m I + J of ideals I = and J = as in Cox \+ et al.\n\nGiven:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 187 "1. Polynomials f1,f2,...,fr entered as a list F that gen erate ideal I = and polynomials g1,g2,...,gs entered as a list G that generate ideal J = .\n\nAlgorithm:" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 281 "1. Retur n a list [f1,f2,...,fr, g1,g2,...,gs] that generates I + J = per Proposition 2 on page 181. \n\nf1:=2*x^3+y^2*z ;\nf2:=2*x^2*y^6+y^2*z*x;\ng1:=-x*y*z+y^2*z*x^5;\ng2:=-y^3*z^3+y^2*z^3 *x;\nF:=[seq(f||i,i=1..2)];\nG:=[seq(g||j,j=1..2)];\nSumOfIdeals(F,G); \n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 337 "SumOfIdeals:=proc(F::list(po lynom),G::list(polynom)) local FG:\noptions `Copyright (c) 2006-2009 b y Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription ` Last revised: December 20, 2008`;\n################################### ##############################################################\nFG:=[o p(F),op(G)]:\nreturn FG;\nend proc:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" } }{PARA 0 "" 0 "" {TEXT -1 111 "18. Computation of a product I . J of i deals I = and J = as in Cox et al.\n\nGi ven:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 187 " 1. Polynomials f1,f2,...,fr entered as a list F that generate ideal I \+ = and polynomials g1,g2,...,gs entered as a list G that generate ideal J = .\n\nAlgorithm:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 114 "1. Return a list [F[i] * G[j]], i=1..r, j=1..s, that generates I . J per Proposition 6 on page 183 in Cox et al..\n" }}{PARA 0 "" 0 "" {TEXT -1 163 "Usage:\n\nf1:=2 *x^3+y^2*z;\nf2:=2*x^2*y^6+y^2*z*x;\ng1:=-x*y^3*z+y^2*z*x^5;\ng2:=-y*z ^3+y^2*z^3*x;\nF:=[seq(f||i,i=1..2)];\nG:=[seq(g||j,j=1..2)];\nProduct OfIdeals(F,G);\n " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 506 "ProductOfIdea ls:=proc(F::list(polynom),G::list(polynom)) local nF,nG,i,j,FG,figj:\n options `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revised: December 20, 2008`;\n# ###################################################################### ##########################\nnF:=nops(F);\nnG:=nops(G);\nFG:=[]:\nfor i from 1 to nF do\n for j from 1 to nG do\n figj:=F[i] * G[j] ;\n FG:=[op(FG),figj];\n end do;\nend do;\nreturn map(expand ,FG);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 124 "19. Computation of an interesection I cap J of two ideals I = and J = as in Cox et al.\n\nGiven:" }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "" 0 "" {TEXT -1 202 "1. Polynomials f1,f2,...,fr entered \+ as a list F that generate ideal I = and polynomials g1, g2,...,gs entered as a list G that generate ideal J = . \n\nAlgorithm (see page 186):" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 286 "1. Compute a Groebner basis GB for the i deal in k[x1,x2,...,xn,t] with r espect to a lex order in which t > x1 > x2 > ... >xn.\n2. Return only \+ those polynomials from the list GB which do not contain t, that is, be long to the ring k[x1,x2,...,xn,t]. \n" }}{PARA 0 "" 0 "" {TEXT -1 67 "f1:=x^2*y;\ng1:=x*y^2;\nF:=[f1];\nG:=[g1];\nIntersectionOfIdeals(F,G) ;\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 1171 "IntersectionOfIdeals:=proc (F::list(polynom),G::list(polynom)) local i,j,nF,nG,t,vars,GB,tF,tG,tF tG;\noptions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu . All rights reserved.`;\ndescription `Last revised: December 20, 2008 `;\n################################################################## ###############################\nnF:=nops(F);\nnG:=nops(G);\n#vars:=[m ap(indets,F),map(indets,G)]:\n#vars:=[op(map(indets,F)),op(map(indets, G))]:\n#vars:=map(op,[op(map(indets,F)),op(map(indets,G))]):\n#vars:=c onvert(map(op,[op(map(indets,F)),op(map(indets,G))]),set):\n#vars:=con vert(convert(map(op,[op(map(indets,F)),op(map(indets,G))]),set),list): \n#################################################################### #################\nvars:=sort(convert(convert(map(op,[op(map(indets,F) ),op(map(indets,G))]),set),list)):\n################################## ###################################################\ntF:=[seq(t*F[i],i =1..nF)];\ntG:=[seq((1-t)*G[j],j=1..nG)];\ntFtG:=[op(tF),op(tG)];\n### ###################################################################### ###########\nvars:=[t,op(vars)];\nGB:=Groebner:-Basis(tFtG,plex(op(var s)));\nRJgrobner:-GbasisL(GB,[t]);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 246 "20. Computation of a LCM of two multivariate polynomials f and g by computing interesection I cap J of two ideals I = and \+ J = . Then, we know from Proposition 13 on page 187 in Cox et al. \+ \nthat I cap J is generated by the LCM(f,g).\n\nGiven:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 118 "1. Polynomials f an d g whose LCM is to be computed in some polynomial ring k[x1,x2,...,xn ].\n\nAlgorithm (see page 187):" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 325 "1. Let I = and J = . Compute a Gr oebner basis GB for the intersection I cap J, which is a principal ide al generated by the LCM(f,g) using our procedure IntersectionOfIdeals. \n2. Return the only generator for the interesection I cap J which is \+ the LCM of f and g. \n\nUsage:\n\nf:=x^2*y;\ng:=x*y^2;\nLeastCommonMul tiple(f,g);\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 370 "LeastCommonMultip le:=proc(f::polynom,g::polynom) local F,G;\noptions `Copyright (c) 200 6-2009 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescr iption `Last revised: December 20, 2008`;\n########################### ###################################################################### \nF:=[f]:\nG:=[g]:\nreturn op(RJgrobner:-IntersectionOfIdeals(F,G));\n end proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 160 "21. Computation of a GCD \+ of two multivariate polynomials f and g by using formula (2) on page 1 87 rather than built into Maple procedure Gcd used above.\n\nGiven:" } }{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 133 "1. Poly nomials f and g whose GCD is to be computed in some polynomial ring k[ x1,x2,...,xn].\n\nAlgorithm (see formula (2) on page 187):" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 134 "1. Let I = a nd J = . Compute LCM(f,g) using procedure LeastCommonMultiple defin ed above.\n2. Return the ration (f*g)/LCM(f,g). \n" }}{PARA 0 "" 0 "" {TEXT -1 56 "Usage:\n\nf:=x^2*y;\ng:=x*y^2;\nGreatestCommonDivisor(f,g );\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 415 "GreatestCommonDivisor:=pro c(f::polynom,g::polynom) local fg,lcm,q;\noptions `Copyright (c) 2006- 2009 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescrip tion `Last revised: December 20, 2008`;\n############################# ####################################################################\n lcm:=RJgrobner:-LeastCommonMultiple(f,g):\nfg:=f*g;\ndivide(fg,lcm,'q' );\nreturn RJgrobner:-reducepol(q);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 292 "22. Computation of the ideal quotient I : J of two ideal s I = and J = using an algortihm describ ed on page 194 as in Cox et al..\n\nGiven:\n\n1. Polynomials f1,f2,... ,fr entered as a list F and polynomials g1,g2,...,gs entered as a list G.\n\nAlgorithm is as follows:\n" }}{PARA 0 "" 0 "" {TEXT -1 418 "1. \+ Compute a basis for I : for each i = 1,..., s, using Theorem 11. \+ Thus, \n STEP 1, we first compute a Groebner basis H[i]i = \{h1,..., hp\} for I cap , i=1,..., s, using IntersectionOfIdeals procedure \+ defined above. \n STEP 2 Then, a basis for I : is Hg[i] = \{h1/ gi,...,hp/gi\}, i=1,...,s.\n\n2. STEP 3: Compute a basis for I : J by \+ applying formula (5) on page 193 s - 1 times as explained on page 194. \n" }}{PARA 0 "" 0 "" {TEXT -1 172 "f1:=2*x^3+y^2*z;\nf2:=2*x^2*y^6+ y^2*z*x;\ng1:=-x*y^3*z+y^2*z*x^5;\ng2:=-y*z^3+y^2*z^3*x;\ng3:=x*y*z-z^ 3*x;\nF:=[seq(f||i,i=1..2)];\nG:=[seq(g||j,j=1..1)];\nQuotientOfIdeals (F,G);\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 2002 "QuotientOfIdeals:=pro c(F::list(polynom),G::list(polynom)) local i,j,r,s,H,Hg,Hg1Hg2,Hg1Hgs ,q;\noptions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane Liu . All rights reserved.`;\ndescription `Last revised: December 20, 2008 `;\n################################################################## ###############################\nr:=nops(F);\ns:=nops(G);\n#return r,s ;\n################################################################### ####\n#STEP 1: Computing bases H[i], i=1,...,s, for I cap \n### ####################################################################\n for i from 1 to s do\n H[i] := RJgrobner:-IntersectionOfIdeals(F,[G [i]])\nend do:\n#return H[1],H[2];\n################################## #####################################\n#STEP 2: Computing bases Hg[i], i=1,...,s, for I : \n######################################### ##############################\nfor i from 1 to s do\n Hg[i]:=[]:\n for j from 1 to nops(H[i]) do \n divide(H[i][j],G[i],'q') :\n Hg[i]:=[op(Hg[i]),q]:\n end do:\nend do:\n#return Hg[1 ],Hg[2];\n############################################################ ##########\n#STEP 3: Computing a basis for I : J by applying recursive ly\n# the intersection algorithm s - 1 times\n################# ######################################################\n#Case when s = 1\n################################################################## #####\nif s = 1 then return Hg[1] end if;\n########################## #############################################\n#Case when s = 2\n##### ##################################################################\nHg 1Hg2 := RJgrobner:-IntersectionOfIdeals(Hg[1],Hg[2]);\nif s = 2 then r eturn Hg1Hg2 end if:\n################################################ #######################\n#Case when s > 2\n########################### ############################################\nHg1Hgs:=Hg1Hg2:\nfor i f rom 3 to s do\n Hg1Hgs:= RJgrobner:-IntersectionOfIdeals(Hg1Hgs,Hg[ i])\nend do:\nreturn map(RJgrobner:-reducepol,Hg1Hgs);\nend proc:\n" } }{PARA 0 "" 0 "" {TEXT -1 778 "23. Procedure 'Beziercubic' defines a B ezier cubic in parametric form [X = X(t), Y = Y(t)]. It returns functi ons X(t) and Y(t) as expressions followed by a list of coordinates of \+ four cotrol points of type list(list), in that order. It can be used t o create a random Bezier cubic by calling it as\n\nBeziercubic(r) \n\n where r is a range, e.g., -3..5, in which random integer coordinates o f four control points [x1,y1], [x2,y2], [x3,y3], [x4,y5] must be conta ined. If r is a llist of four lists as in [[x1,y1], [x2,y2], [x3,y3], \+ [x4,y5]], then these coordinates are used for the control points. In e ither case, the list [[x1,y1], [x2,y2], [x3,y3], [x4,y5]] is returned \+ as the third item in the output with X and Y being, respectively, the \+ first and the second item in the output.\n " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 1222 "Beziercubic:=proc(r::\{range,list(list)\}) local di m,p0,p1,p2,p3,i,j,P0,P1,P2,P3,G,MB,u,XX,die,x1,x2,x3,x4,y1,y2,y3,y4,S, X,Y,L:\noptions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane \+ Liu. All rights reserved.`;\ndescription `Last revised: December 20, 2 008`;\n############################################################### ##################################\ndim:=2:\np0,p1,p2,p3:=\n matr ix(dim,1,(i,j)->P0||i||j),matrix(dim,1,(i,j)->P1||i||j),\n matrix (dim,1,(i,j)->P2||i||j),matrix(dim,1,(i,j)->P3||i||j);\nG:=linalg:-aug ment(p0,p1,p2,p3);\nMB:=matrix(4,4,[1,-3,3,-1,0,3,-6,3,0,0,3,-3,0,0,0, 1]);\nu:=matrix(4,1,[1,t,t^2,t^3]);\nXX:=evalm(G &* MB &* u);\nif type (r,range) then\n die := rand(r):\nx1,y1,x2,y2,x3,y3,x4,y4:=seq(die() ,i=1..8);\nelse\n if nops(r) <> 4 then \n error `argument of ty pe list(list) must contain exactly four lists with xy-coordinates of f our control points`\n end if;\nx1,y1,x2,y2,x3,y3,x4,y4:=op(map(op,r) );\nend if;\n#printf(\"x1=%a,y1=%a,x2=%a,y2=%a,x3=%a,y3=%a,x4=%a,y4=%a \\n\",x1,y1,x2,y2,x3,y3,x4,y4); \nS:=\{P011=x1,P111=x2,P211=x3,P311=x4 ,P021=y1,P121=y2,P221=y3,P321=y4\}:\nL:=[[x1,y1],[x2,y2],[x3,y3],[x4,y 4]]:\nX,Y:=subs(S,evalm(XX))[1,1],subs(S,evalm(XX))[2,1];\nreturn X,Y, L;\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 590 "24. Procedure 'implic itBeziercubic' reads in from the database a polynomial in variables x1 ,y1,x2,y2,x3,y3,x4,y4, and x,y which gives a Bezier cubic in implicit \+ form. Points [x1,y1], [x2,y2], [x3,y3], [x4,y4] are four control point s of the cubic. This procedure can be used without any argument, like \+ i\n\nimplicitBeziercubic();\n\nand then it returns the implicit polyno mial. It can also be used in one argument L of the type list(list) whe re L is a list of four lists [x1,y1], [x2,y2], [x3,y3], [x4,y4] that g ive the control point:\n\nimplicitBeziercubic([[x1,y1], [x2,y2], [x3,y 3], [x4,y4]]);\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 743 "implicitBezier cubic:=proc() local p,L;\noptions `Copyright (c) 2006-2009 by Rafal Ab lamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revis ed: December 20, 2008`;\n############################################# ####################################################\np:=readlib('_imp licitbezierpolynomial');\nif nargs=0 then return p end if;\nif not typ e(args[1],list(list)) then\n error `first argument must be a list of exactly four lists [[x1,y1],[x2,y2],[x3,y3],[x4,y4]]` \nend if;\nL:=m ap(op,args[1]);\nif nops(L)<>8 then\n error `first argument must be \+ a list of exactly four lists [[x1,y1],[x2,y2],[x3,y3],[x4,y4]]`\nend i f:\nL:=op(L);\np:=subs(\{x1=L[1],y1=L[2],x2=L[3],y2=L[4],x3=L[5],y3=L[ 6],x4=L[7],y4=L[8]\},p);\nreturn p;\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 307 "25. Procedure 'curvature' computes curvature of a parame rized curve in R^3, that is, a curve given as [X,Y,Z] where X,Y,Z are \+ expressions in t that give points (x,y,z) on the curve.\nWhen X,Y,Z, a re functions of t, they maust be entered as X(t),Y(t), and Z(t):\n\ncu rvature(X,Y,Z);\ncurvature(X(t),Y(t),Z(t));\n " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 808 "curvature:=proc(X::\{polynom(anything,t),algebraic\} ,Y::\{polynom(anything,t),algebraic\},Z::\{polynom(anything,t),algebra ic\}) \n local beta,beta1,beta2,beta3,beta12,normbeta1,normb eta12:\noptions `Copyright (c) 2006-2009 by Rafal Ablamowicz and Jane \+ Liu. All rights reserved.`;\ndescription `Last revised: December 20, 2 008`;\n############################################################### ##################################\nbeta:=;\nbeta1:=map(simplif y,map(diff,beta,t));\nbeta2:=map(simplify,map(diff,beta1,t));\nbeta3:= map(simplify,map(diff,beta2,t));\nbeta12:=map(simplify,LinearAlgebra:- CrossProduct(beta1,beta2));\nnormbeta12:=LinearAlgebra:-VectorNorm(bet a12,2,conjugate=false);\nnormbeta1:=LinearAlgebra:-VectorNorm(beta1,2, conjugate=false);\nreturn combine(normbeta12/normbeta1^3,trig);\nend p roc:\n" }}{PARA 0 "" 0 "" {TEXT -1 69 "Last procedure is the 'setup' p rocedure. It is automatically loaded.\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 374 "setup:=proc() \nlocal x,y,i,j;\nglobal libname,`convert/set_t o_pts`;\n############################################################# #######################\noptions `Copyright (c) 2006-2009 by Rafal Abl amowicz and Jane Liu. All rights reserved.`;\ndescription `Last revise d: December 20, 2008`;\n############################################## ######################################\n" }}{PARA 0 "" 0 "" {TEXT -1 260 "1. Procedure `convert/set_to_pts` converts Maple output from the \+ procedure 'solve' to a list of points that can be plotted either in th e plane or in the space. \n\nUsage:\n\nS:=remove(has,map(allvalues,\{s olve(\{op(L),g\},\{x,y\})\}),I);\nPTS:=map(convert,S,set_to_pts);\n" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 532 "printf(\"RJgrobner Version 7 (Dec ember 20, 2008) at your service\\n(c) 2003-2009 RA&JL, sorry, no warra nty for anything!\\n\",%s);\nprintf(\"Load SINGULARPLURALlink for inte rface with Singular:Plural\\n(c) 2003-2009 RA&BF\\n\",%s);\n########## #########################################\n`convert/set_to_pts`:=proc( S) local L,locsort:\nL:=convert(S,list):\nlocsort:=(a,b)->lexorder(lhs (a),lhs(b));\nL:=sort(L,locsort);\nmap(rhs,L);\nend proc:\n\n######### ###########################################\nend proc: ###<< " 0 "" {MPLTEXT 1 0 11 "en d module:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "savelibname;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q7C:\\Maple12/Cliffordlib6\"" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "#march('delete',libname[1],R Jgrobner);\n" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 84 "Do not execute th e next command unless \"savelibname\" above returns \".../Cliffordlib \"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 96 "savelib('RJgrobner'); #unremark and excute only if \"savelibname\" returns \".../Cliffordli b\" above" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "with(LibraryTo ols);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#72%1ActivationModuleG%1AddFro mDirectoryG%'AuthorG%'BrowseG%3BuildFromDirectoryG%/ConvertVersionG%'C reateG%'DeleteG%,FindLibraryG%,PrefixMatchG%)PriorityG%%SaveG%-ShowCon tentsG%*TimestampG%4UpdateFromDirectoryG%*WriteModeG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "ShowContents(libname[1]);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7;7&Q*Bigebra.m6\"7(\"%3?\"#7\"#?\"#;\"#=\"#D\"'l(\"$l$7&Q/code_support.mF&7(F(F)F*F3\"#_\"#a\"'O hq\"$v%7&Q)Define.mF&7(F(F)F*F+\"#:F,\"'2ta\"$*[7&Q>P.mF&7(F(F)F*F+ \"#K\"#c\"'?3z\"$!G7&Q&GfG.mF&7(F(F)F*F,\"\"'\"#C\"'\\oF\"%187&Q+matre alL.mF&7(F(F)F*F+\"#5\"#L\"'3%)e\"'9k67&Q+Octonion.mF&7(F(F)F*F+\"#Q\" #P\"'XR`\"$O%7&Q,RJgrobner.mF&7(F(F)\"#@Fdo\"\"$\"#f\"(:@6\"\"%j57&Q5S INGULARPLURALlink.mF&7(F(F)F*F*\"\"#FO\"'m'>(\"$&H7&Q+SchurFkt.mF&7(F( F)F*\"#>\"#N\"#d\"'N?v\"%DU7&Q2SymGroupAlgebra.mF&7(F(F)F*F*\"\")\"#U \"&6T&\"$f(7&Q>_AlternatingGroup_rem_table.mF&7(F(F)F*F*FbpFdo\"(r]-\" \"%Y77&Q:_FiniteGroups_rem_table.mF&F`q\"(H30\"\"%]C7&Q6_Reynolds_rem_ table.mF&F`q\"(#\"%76" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 19 "with(code_support);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%!G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%inModule~code_cupport~ve r.~1.03~for~CLIFFORD~et~al.~for~Maple~12G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%apCopyright~(c)~2002-2009~by~Rafal~Ablamowicz~and~Bert fried~Fauser.~All~rights~reserved.G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #%@Last~revised:~December~20,~2008G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #%!G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7-%/NamesInLibraryG%1change_he lpfilesG%,change_nameG%*copy_fileG%)get_TEXTG%(get_dirG%1insert_helppa gesG%)makeLISTG%+modifyLISTG%0replace_in_fileG%&splitG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "NamesInLibrary(libname[1]);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q2SymGroupAlgebra.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matquatR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #Q<_SymmetricGroup_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q +matcompR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q>_AlternatingGroup_ rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q6_Reynolds_rem_tabl e.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q%SP.m6\"" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#Q+matquatL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q* Bigebra.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q&GfG.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QA_generateGinvariants_rem_table.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matcompL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q<_implicitbezierpolynomial.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q:_FiniteGroups_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matrealR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Oc tonion.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q,RJgrobner.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q)Define.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Clifford.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+ma trealL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q/code_support.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q5SINGULARPLURALlink.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+SchurFkt.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Cliplus.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q>P.m6\"" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 169 "Defining a nd saving to database _implicitbezierpolynomial that gives implicit fo rm of a Bezier cubic. This polynomial is read then by the procedure im plicitBeziercubic:\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8760 "_ implicitbezierpolynomial := -27*y2^2*x4^2*x2*y+27*y2^2*x4^2*y1*x2+18*x 2*x1^2*y4*y^2-27*x1^2*y2*x4*y^2-18*y1^2*x^2*x4*y2-3*y1^2*x^2*x1*y4+3*y 1*x4*y4^2*x^2+3*y1*x4*x1^2*y4^2-3*y1^2*x4^2*x1*y4+27*y1*x4*x2^2*y^2+27 *x3*y3^2*x1^2*y-27*x3*y3^2*x1^2*y4+27*y2^3*x4^2*x-54*y1*x3^3*y^2-x1^3* y4^3-27*x2^3*y^3+27*x3^3*y^3+y1^3*x4^3-27*y3^3*x^3-y1^3*x^3+x1^3*y^3+5 4*y1*x3^3*y4*y+27*y3^3*x4*x1^2-27*y3^3*x*x1^2+27*y3^3*x^2*x4+54*y3^3*x ^2*x1-3*x1^3*y4*y^2+3*y4^3*x*x1^2+3*y1^3*x^2*x4+27*y1^2*x3^3*y-9*x3*y2 *y1*x4*x1*y4+81*x3*y2*y1*x2*y3*x+9*x3*y2*y1*x4*x1*y+9*x3*y2*y1*x4*y4*x +18*x3*y2*y1*x4^2*y-81*x3*y2^2*x1*y3*x-81*x3*y2^2*y3*x4*x-6*y1*x4*x1*y 4^2*x+27*y1^2*x4*x3*y4*x2-81*x3*y3*x1*y2*x2*y+81*x3*y3*y1*x2^2*y+27*y1 *x4^2*x1*y2*y3-9*y1^2*x4*x*x2*y+9*y1*x4*x1*y^2*x2+27*x3^2*y3*y1^2*x4+9 *y4^2*x^2*x3*y+27*y4*x*x3^2*y^2-81*x2^2*y3*x3*y^2+18*x4*y^3*x1*x2-81*y 3*x*x3^2*y^2+81*y3^2*x^2*x3*y-27*x4*y*y2^2*x^2-3*x4*y*y1^2*x^2-9*y1^2* x^2*y3*x4-3*y1*x*x4^2*y^2+54*x4*y1*x3^2*y^2-3*x1*y4*x4^2*y^2+18*y1*x^3 *y3*y4+54*y1*x^3*y2*y3-9*y1^2*x^2*x2*y-54*y1*x^2*x1*y3^2+54*y1*x^2*x2* y4^2-18*y1*x^3*y2*y4-27*y1*x*x3^2*y^2-27*y1*x*x2^2*y^2+9*y1^2*x^2*x3*y -3*y1*x*x1^2*y^2+3*y1^2*x4^2*y4*x+162*x2^2*y3*x4*y^2-81*x2^2*y4*x3*y^2 -18*x2*y3*x4^2*y^2+3*x4^2*y^2*y4*x+9*y2*x*x4^2*y^2-9*y3*x*x4^2*y^2-18* y1*x3*x4^2*y^2+27*y*x1*y3^2*x^2+3*y*x1*y4^2*x^2+3*y*x1*y1^2*x4^2+21*y* x1^2*y4^2*x+81*y*x1*x4^2*y2^2-54*y*y1*y4*x2^3+18*y*x2*y1^2*x4^2-3*y*x4 *x1^2*y4^2-3*y*x4*y4^2*x^2-54*y*x4^2*y2^2*x-27*y*x4*y3^2*x^2-81*y*x2*y 2^2*x^2-9*y*x2*y4^2*x^2-81*y*x2*y3^2*x^2+27*y*x1*y2^2*x^2-9*x2*x1^2*y4 ^2*y+27*x2^2*y4^2*y2*x+27*x1*y4^2*x2^2*y-27*x1*y2*y4^2*x2^2-162*x1*x3^ 2*y2*y^2+81*x2*y4*x3^2*y^2+162*y1*x^2*x2*y3^2+18*y1^2*x*y3*x4^2-27*y1* x*x4^2*y2^2-81*y1*x*x2^2*y4^2-27*y1*x^2*x3*y4^2+54*y*x2^2*y4^2*x-18*y* x3*y4^2*x1^2-9*x3*y2*x4^2*y^2+3*y1*x4*x1^2*y^2+54*y2^2*x^2*x4*y4-9*y2* x^2*x3*y1^2+81*y2^2*x^2*y3*x4-27*y2^2*x^2*x1*y4+54*y2^2*x^2*x2*y4-54*y 2*x^2*x2*y4^2-162*y2^2*x^2*x3*y4-18*y2*x*x1^2*y4^2+9*y2*x^2*x1*y4^2-81 *y2*x^2*x1*y3^2-81*y2*x^2*x4*y3^2+54*y2^3*x*x1*x4-18*x2*y3*y1^2*x4^2+8 1*x2^2*y3^2*y1*x4+27*x3^2*y3*y^2*x4-9*x3*y2*y1^2*x4^2+18*x3*y2*y4^2*x^ 2+27*x2^2*y^2*y4*x+81*x2^2*y^2*y2*x+54*x2*x3*y^3*x4-27*y3*x^2*x4*y2*y4 -9*y3*x*y1*x2*x1*y4+54*y3^2*x*y1*x3*x1-54*y3^2*x*x3*x4*y-3*y4^3*x^2*x1 +81*y3*x*y1*y4*x2^2+54*y3*x*y4*x3^2*y+81*y3*x^2*x2*y4*y2+54*y3^2*x*x1* y4*x3-18*y3*x*x1*y4^2*x2-27*y4^2*x*x2*x3*y+81*x2*x1*y3*x3*y^2+45*y1*x* x1*y2*x4*y+27*y4^2*x*y1*x3*x2-6*y1^2*x*x4*x1*y+6*y1*x*x1^2*y4*y+162*y1 *x*x3*y3*y4*x2+54*y1*x^2*x3*y*y3+6*x4*y^2*x1*y1*x-18*x4*y^2*x1*y2*x-54 *y3*x^2*x3*y*y4+18*x4*y*y1*x^2*y2+54*x4*y^2*x2*y2*x-18*x4*y^2*y1*x*x2+ 6*y1*x^2*x4*y*y4-54*y1^2*x3*y3*x4*x-81*y2*x*x3*y3*y4*x2-27*y2*x4*x1^2* y3*y4-54*y2^2*x4*x2*y4*x+54*y2^2*x4*x1*y4*x2+108*y3*x*y1*x3^2*y-81*y3* x*x2^2*y4*y-108*y3^2*x*x1*x3*y-81*y3*x*x1*y2*y4*x2+81*y3^2*x*x1*y2*x2- 27*y3*x*y1*x4^2*y2-9*y3*x*y1*x4*y4*x2+54*y3^2*x*y1*x3*x4-54*y3*x*y1*y4 *x3^2+54*y3*x*x4*y2*x1*y4+18*x1*y3*x*x4*y^2+54*x1*y2*x*x3*y^2+63*x2*x1 *y4*x4*y^2+27*x2*x1*y4*x3*y^2-153*x2*x1*y3*x4*y^2-6*x1*x4*y^2*y4*x-54* x1*x3*y^2*y3*x-27*x1*x3*y3*x4*y^2-63*x1*y1*x3*x4*y^2-27*x2*y1*x3*x1*y^ 2+81*x2*x1*y2*x3*y^2+27*x2*x1*y2*x4*y^2-54*x2*y3*x*x4*y^2-27*y*x4*y1^2 *x3^2+54*y*x1^2*y3^2*x-81*y*x1^2*y3^2*x4+9*y*x3*y1^2*x4^2-54*x1*x2*y^3 *x3-18*x1*x3*y^3*x4-27*x1*y2*x2^2*y^2+27*x1*y3*x4^2*y^2+81*x2*y1*x3^2* y^2+9*x2*x1^2*y3*y^2-27*x1*y4*x3^2*y^2-54*x1^2*y3*x3*y^2+3*x1^2*y^2*y4 *x+9*x1^2*y^2*y2*x-9*x1^2*y^2*y3*x+54*x1^2*y3*x4*y^2+9*x1^2*y4*x3*y^2- 21*x1^2*y4*x4*y^2+18*x1^2*y2*x3*y^2+21*x1*y1*x4^2*y^2-54*x4*y2*x2^2*y^ 2+54*x1*y1*x3^2*y^2-54*x1*x4^2*y2*y^2-54*x2^2*y4*x4*y^2-54*x1*y4*x2^2* y^2-81*y1*x2^2*y^2*x3-9*x2*y1*x4^2*y^2+54*x2*x4^2*y2*y^2+3*y1^2*x^2*x1 *y-21*y1*x^2*x1*y4^2-3*y1*x*x1^2*y4^2-54*y1^2*x*x3^2*y+81*y1^2*x*y4*x3 ^2+27*y1*x^2*x4*y3^2+54*y1*x^2*x4*y2^2+9*y1^2*x*x4^2*y2+21*y1^2*x^2*x4 *y4+54*y1^2*x^2*x3*y3-21*y1^2*x*x4^2*y+27*y1^2*x^2*x2*y4-18*y1^2*x^2*x 2*y3-54*y1^2*x^2*x3*y4-81*x2^2*y^2*y3*x+81*x3^2*y2^2*x1*y+54*x3^2*y3*x 1*y^2+27*y2^2*x^2*y1*x2-81*x2^2*y3^2*x4*y+81*y2^2*x^2*x1*y3+9*x2*y3*x1 ^2*y4^2-81*x3^2*y2^2*x1*y4+18*x3*y2*x1^2*y4^2+81*x3^2*y2^2*y4*x-81*x3^ 2*y2^2*x*y+81*x3*y2^2*x^2*y3+81*x3^2*y2*x2*y^2+81*y2*x*x3^2*y^2-54*y2* x^3*y3*y4+81*y2^2*x^2*x3*y-27*y3^2*x^2*x3*y4-27*y3*x*y1^2*x3^2-54*y3^2 *x^2*x1*y4+27*y3^2*x*x1^2*y4+18*y3*x^2*x1*y4^2-9*y3*x*x1^2*y4^2-81*y3^ 2*x*y1*x2^2-54*y3^2*x^2*y1*x3+9*y3*x^2*x2*y4^2+81*y3^2*x*x2^2*y-54*y3^ 3*x*x1*x4-81*y3^2*x^2*x2*y2+9*y1*x*x1*y2*y4*x3-54*y1*x*x1*y2*x4*y3-27* y1^2*x*x3*y4*x2+36*y1^2*x*x2*x4*y3-81*y1*x*x4*y2*x2*y+81*x2^2*y^3*x3-2 7*x4*x3^2*y^3+9*x3*y^3*x4^2-9*x2*x4^2*y^3+9*y1^2*x^3*y2+3*y1^2*x^3*y4- 9*y1^2*x^3*y3+3*y1*x4^3*y^2-27*x4*y^3*x2^2+27*y3^2*x^3*y4-3*x4*y^3*x1^ 2-9*y3*x^3*y4^2-3*y1*x^3*y4^2-3*y1^3*x*x4^2-27*y1*x^3*y2^2+3*x1*x4^2*y ^3+9*x1^2*y^3*x3-27*y1*x^3*y3^2+27*x1*x3^2*y^3+27*y1*x2^3*y^2-81*x2*x3 ^2*y^3+27*x1*x2^2*y^3+54*x2^3*y4*y^2+9*y1*x*x4*y2*x1*y4-63*y1*x^2*x4*y 2*y4+63*y1*x*x4^2*y2*y+27*y1*x^2*x1*y2*y3-9*y1*x*x1*y2*x3*y+63*y1^2*x* x3*x4*y-27*y1*x^2*y3*x4*y2-9*y1*x^2*x1*y2*y4-54*x2*x3*y^2*y4*x-162*x2* y2*x*x3*y^2-27*y1^2*x*x4*y4*x2+6*y1^2*x*x4*x1*y4+153*y1*x^2*x3*y2*y4+5 4*x3*y3^2*x1*x4*y-54*x3*y3^2*y1*x4*x1-54*x3^2*y3*x1*y4*y+54*x3^2*y3*y1 *x1*y4-54*x3^2*y3*y1*x1*y-54*x3^2*y3*y1*x4*y+18*x2*x4*y^2*y4*x+162*x2* x3*y^2*y3*x-54*x1*x2*y^2*y2*x+54*x1*x2*y^2*y3*x+153*x1*x3*y2*x4*y^2+18 *x1*x3*y^2*y4*x-18*x1*x2*y^2*y4*x+27*y1*x*x1*y4^2*x2-6*y1*x^2*x1*y*y4- 18*y1*x^2*x1*y*y2+18*y1*x^2*x1*y*y3+45*y1*x*x1*y4*x3*y-45*y1*x*x1*y4*x 2*y+18*y1*x*x1*y^2*x2+27*y1^2*x*x2*x3*y-3*y*y1^2*x4^3+3*y*x1^3*y4^2-27 *x3^3*y4*y1^2-27*x2^3*y4^2*y+27*y1*y4^2*x2^3-x4^3*y^3+27*y2^3*x^3+y4^3 *x^3+27*y1*x^2*x3*y3*y4-81*y1*x*x3*y3*x4*y+27*x4*x2*y4*x3*y^2-27*y1*x* y4*x3^2*y+180*y1*x*x2*y3*x4*y-18*y1*x^2*y3*x4*y-108*y1*x*x1*y3*y4*x3+1 8*y1*x*x3*y^2*x4-45*y1*x*x2*y4*x4*y-54*y1*x^2*y2*x3*y-27*y1*x^2*x2*y4* y2+27*y1*x*x2^2*y4*y-45*y1*x*x1*y3*x4*y+63*y1*x^2*x1*y3*y4-54*y1*x^2*x 2*y*y3+18*y1*x^2*x2*y*y4+54*y1*x*x2*y^2*x3+54*y1*x^2*x2*y*y2-18*y1*x*x 1*y^2*x3+54*y2*x4*x2^2*y4*y+9*y1*x^2*y3*x4*y4-9*y1*x*y3*x4*y4*x1+81*x3 *y2*x2*y3*x4*y-81*x3^2*y2*x2*y4*y-36*x3*y2*x1*y4^2*x-81*x3^2*y2*y1*x2* y-81*x3*y2*y1*x2*x4*y3+81*x3^2*y2*y1*y4*x2+81*x3*y2^2*x1*x4*y3-54*x4*y 2*x*x3*y^2-18*x4*x3*y^2*y4*x+54*x4*x3*y^2*y3*x-9*x1*y4*x3*x4*y^2-63*y* x2*x1*y4^2*x-81*y*x2*x1*y3^2*x-54*y*x2*y1*x4^2*y2+243*y*x2*x3*y2*y4*x- 9*y*x2*y1*x4*x1*y4+9*y*x2*x1*y3*y1*x+126*y*x2*x1*y3*y4*x-18*y*x2*x1^2* y3*y4-27*y*x1^2*y2*y3*x+27*y*x1^2*y2*x4*y3-6*y*y1*x4*x1^2*y4+27*y*x4*y 2*x1^2*y4-63*y*x1^2*y3*y4*x+54*y*x1^2*y3*y4*x3-36*y*x1^2*y2*y4*x3+9*y* x1^2*y2*y4*x+81*y*x1*x3*y3*y4*x-27*y*x1*x4*y2^2*x+27*y*x1*x4*y3^2*x+10 8*y*x1*y1*x3*x4*y3-54*y*x1*y1*y4*x3^2-27*y*x1*y1*x4^2*y2-180*y*x1*x3*y 2*y4*x+81*y*y1*x2^2*y3*x-162*y*y1*x2^2*x4*y3-108*y*x2^2*y4*y2*x+81*y*y 1*x3*y4*x2^2+54*y*y1*x4*y4*x2^2+54*y*y1*x2^2*x4*y2+54*y*x1*y2*y4*x2^2- 27*y*x2*x3*y1^2*x4-243*y*x2*y3*x4*y2*x+108*y*x2*x4*y2^2*x-54*y2^3*x^2* x4-27*y2^3*x^2*x1+9*y2*x^3*y4^2+81*y2*x^3*y3^2+27*y2^2*x^3*y4-81*y2^2* x^3*y3-27*x3^3*y4*y^2-9*x1^2*y^3*x2-27*y2^3*x4^2*x1+81*y*x2*x1*y2*y4*x +54*y*x2*y1*x3*x1*y4-108*y*x2*x4*y2*x1*y4-243*y*x2*y1*x3*y3*x+81*y*x2* y1*x3*y2*x+27*y*y3*x4^2*y2*x-9*y*y3*x4^2*y1*x+54*y*x4*y2*x^2*y3-18*y*x 4*y2*x^2*y4+18*y*x4*y3*x^2*y4-6*y*y1*x4^2*y4*x-27*y*x1*y2*x4^2*y3+81*y *x4*x3*y2*y1*x2+36*y*y1*x2*x4^2*y3+6*y*y1*x4^2*x1*y4-126*y*x4*y1*x3*y2 *x-81*y*x4*x1*y2^2*x3+45*y*x4*y1*x3*y4*x+9*y*x4*x1*y2*y4*x3+6*y*x4*x1* y4^2*x-54*y*x4*y1*x3*y4*x2-9*y*x4*x3*y2*y4*x+81*y*x4*x3*y2^2*x-81*y*x2 *x1*y2*y4*x3+162*y*x2*x1*y2*x4*y3+54*y*x2*y3*x^2*y4-54*y*x2*y2*x^2*y4+ 162*y*x2*y2*x^2*y3-27*y*x1*y3*x4^2*y1-45*y*x1*y3*x4*y4*x-54*y*y1*x2^2* y2*x-81*y*x2*x1*y2*y3*x+27*y*y3*x4*y4*x1^2+54*y*x2*x1*y2^2*x-18*y*x1*y 3*x^2*y4-54*y*x1*y2*x^2*y3+18*y*x1*y2*x^2*y4+9*y*x1*y4*x3*x4*y1-54*y*x 2*x1*y2^2*x4+54*y1*x*x1*y3^2*x4-18*y1*x^2*x3*y*y4+27*x2*x1*y4^2*x3*y-2 7*x2*y1*x3*x1*y4^2-27*x2*y1*x3*x4*y^2-153*y1*x^2*y3*x2*y4+108*y1*x*x4* y2*y4*x2+81*y1*x*x3^2*y2*y-162*y1*x*x4*y3^2*x2-81*y1*x^2*x3*y2*y3+27*y 1*x*x3*y4^2*x1+81*y1*x*x3*y3*x4*y2-81*y1*x*y4*x3^2*y2-27*y1^2*x*y4*x3* x4+9*y*x1*x3*y4^2*x+162*y*x1*y4*x3^2*y2+243*y*x1*x3*y2*y3*x+81*y*x4*x3 *y2*y3*x-81*y*x2*y3*x3*y4*x+9*y*x2*y3*x4*y4*x+81*y*x2*x3*y3*x4*y1+81*y *x2*x4*y3^2*x+45*y*x1*x4*y2*y4*x-162*y*x1*x3*y3*x4*y2-81*y*x2*y4*x3^2* y1-81*x2*y3*x3*x4*y^2+18*y2*x*x3*y1^2*x4-81*y2^2*x*x1*x3*y+81*y2*x^2*x 3*y3*y4+54*y2*x*y1*y4*x2^2-81*y2*x*y4*x3^2*y-81*y2*x*x1*y3*y4*x3+81*y2 *x*x1*y3^2*x4+27*y2*x*x1^2*y3*y4+27*y2*x^2*x1*y3*y4+54*y2*x*x1*y4^2*x2 +81*y2*x*y1*x2*x4*y3-162*y2*x*y1*x3*y4*x2-54*y2^2*x*y1*x2*x4-54*y2^2*x *x1*y4*x2+162*y2^2*x*x1*y4*x3-81*y2^2*x*x1*x4*y3-54*y2^2*x*x4*x1*y4-81 *y2*x^2*y1*x2*y3-9*x2*y3*y1*x4*x1*y+81*x2*y3^2*x4*y2*x+81*x2^2*y3*y4*x 3*y+81*x2*y3^2*x1*x4*y-81*x2*y3*x1*y4*x3*y-9*x2*y3*x1*y4*x4*y+81*x2*y3 *x1*y2*y4*x3-81*x2*y3^2*x1*y2*x4+9*x2*y3*y1*x4*x1*y4-81*x2^2*y3*y1*x3* y4-162*y2*x^2*x3*y*y3+54*y2*x^2*x3*y*y4-81*x4*x3*y2*x2*y^2-54*y2*x4*y1 *y4*x2^2:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "savelib('_impl icitbezierpolynomial');" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "ShowContents(libname[1] );" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7;7&Q*Bigebra.m6\"7(\"%3?\"#7\"# ?\"#;\"#=\"#D\"'l(\"$l$7&Q/code_support.mF&7(F( F)F*F3\"#_\"#a\"'Ohq\"$v%7&Q)Define.mF&7(F(F)F*F+\"#:F,\"'2ta\"$*[7&Q& GTP.mF&7(F(F)F*F+\"#K\"#c\"'?3z\"$!G7&Q&GfG.mF&7(F(F)F*F,\"\"'\"#C\"' \\oF\"%187&Q+matrealL.mF&7(F(F)F*F+\"#5\"#L\"'3%)e\"'9k67&Q+Octonion.m F&7(F(F)F*F+\"#Q\"#P\"'XR`\"$O%7&Q,RJgrobner.mF&7(F(F)\"#@Fdo\"\"$\"#f \"(:@6\"\"%j57&Q5SINGULARPLURALlink.mF&7(F(F)F*F*\"\"#FO\"'m'>(\"$&H7& Q+SchurFkt.mF&7(F(F)F*\"#>\"#N\"#d\"'N?v\"%DU7&Q2SymGroupAlgebra.mF&7( F(F)F*F*\"\")\"#U\"&6T&\"$f(7&Q>_AlternatingGroup_rem_table.mF&7(F(F)F *F*FbpFdo\"(r]-\"\"%Y77&Q:_FiniteGroups_rem_table.mF&F`q\"(H30\"\"%]C7 &Q6_Reynolds_rem_table.mF&F`q\"(#\"%76" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "NamesInLibrary(libname[1]); " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q2SymGroupAlgebra.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matquatR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q<_SymmetricGroup_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matcompR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q>_A lternatingGroup_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q6_R eynolds_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q%SP.m6\"" } }{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matquatL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Bigebra.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q&GfG .m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QA_generateGinvariants_rem_ta ble.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matcompL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q<_implicitbezierpolynomial.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q:_FiniteGroups_rem_table.m6\"" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#Q+matrealR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Octonion.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q,RJgrobner.m6\" " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q)Define.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Clifford.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+ma trealL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q/code_support.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q5SINGULARPLURALlink.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+SchurFkt.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Cliplus.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q>P.m6\"" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "with(RJgrobner);" }}{PARA 6 "" 1 "" {TEXT -1 55 "RJgrobner Version 7 (December 20, 2008) at your service" }} {PARA 6 "" 1 "" {TEXT -1 53 "(c) 2003-2009 RA&JL, sorry, no warranty f or anything!" }}{PARA 6 "" 1 "" {TEXT -1 58 "Load SINGULARPLURALlink f or interface with Singular:Plural" }}{PARA 6 "" 1 "" {TEXT -1 19 "(c) \+ 2003-2009 RA&BF" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7<%,BeziercubicG%'G basisG%(GbasisLG%6GreatestCommonDivisorG%5IntersectionOfIdealsG%4Least CommonMultipleG%0ProductOfIdealsG%1QuotientOfIdealsG%*RJversionG%2Radi calMembershipG%&SpolyG%,SumOfIdealsG%8completelyreducedGbasisG%*condit ionG%+condition2G%+condition3G%*curvatureG%+homogenizeG%4implicitBezie rcubicG%*maxdegreeG%-maxmindegreeG%/maxtotaldegreeG%.minimalGbasisG%.r educedGbasisG%*reducepolG%*reductionG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "RJversion();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%L+++ ++++++++++++++++++++++++++++++++++++++++G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%WRJgrobner~-~A~Maple~12~Small~Package~for~Grobner~Base sG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%^oLast~revised:~December~20,~20 08~(Source~file:~RJgrobner_07_M12.mws)G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%gnCopyright~2006-2009~by~Rafal~Ablamowicz~(*)~and~Jane~Liu~($)G " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%!G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%H(*)~Department~of~Mathematics,~Box~5054G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%gn~~~~Tennessee~Technological~University,~Cookeville,~ TN~38505G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%U~~~~tel:~USA~(931)~372- 3622,~fax:~USA~(931)~372-6353G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%;~~ ~~rablamowicz@tntech.eduG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%B~~~~htt p://math.tntech.edu/rafal/G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%V($)~D epartment~of~Civil~and~Environmental~EngineeringG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%gn~~~~Tennessee~Technological~University,~Cookeville,~ TN~38505G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%O~~~~tel:~USA~(931)~372- 3256,~fax:~USA~372-6239G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%4~~~~jliu @tntech.eduG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%B~~~~http://math.tnte ch.edu/rafal/G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%!G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%[o++++++++++++This~is~RJgrobner~for~Maple~12~vers ion~7++++++++++++G" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 29 "Cookeville, December 20, 2008" }}} }{MARK "23 0 0" 2 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }