{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 74 "This is a source file for \+ the package RJgrobner file RJgrobner_11_07.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 1055 "RJ version:= proc()\noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revised: June 19, 2008`;\nprint(`+++++++++++++++++++++++++++++++++++++++++++`);\npr int(`RJgrobner - A Maple 11 Small Package for Grobner Bases`); \nprint (`Last revised: June 19, 2008 (Source file: RJgrobner_M11_07.mws)`);\n print(`Copyright 2006-2008 by Rafal Ablamowicz (*) and Jane Liu ($)`); \nprint(``);\nprint(`(*) Department of Mathematics, Box 5054`);\nprint (` Tennessee Technological University, Cookeville, TN 38505`);\npri nt(` tel: USA (931) 372-3622, fax: USA (931) 372-6353`);\nprint(` \+ rablamowicz@tntech.edu`);\nprint(` http://math.tntech.edu/rafal/` );\nprint(`($) Department of Civil and Environmental Engineering`);\np rint(` Tennessee Technological University, Cookeville, TN 38505`); \nprint(` tel: USA (931) 372-3256, fax: USA 372-6239`);\nprint(` \+ jliu@tntech.edu`);\nprint(` http://math.tntech.edu/rafal/`);\nprin t(``);\nprint(`++++++++++++This is RJgrobner for Maple 11 version 7+++ +++++++++`);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 203 "1. Procedur e 'reducepol' reduces the given polynomial by dividing it by its conte nt, 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 280 "reducepol:=proc(f::polynom) local p:\noption s `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All right s reserved.`;\ndescription `Last revised: June 19, 2008`;\n########### ###################################################################### ###\nf/icontent(f);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 620 "2. P rocedure Spoly computes an S-polynomial for any two monomials/polynomi als specified as the i-th entry F[i] and the j-th entry F[j] in the li st F, a basis of some ideal I, for the given monomial order T entered as the third argument, for example, plex(t,z,y,x) or lexdeg([x],[y,z] ) (see below). It computes the remainder of the division of the S-poly nomial with respect to the basis F of I specified as the second argume nt. The procedure normally returns an updated basis for the ideal. If \+ used with a fourth optional parameter 'spoly', it returns the S-polyno mial only. \n\nRecall that Maple uses these term orders:\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 d enote a weighted degree order" }}{PARA 14 "" 0 "" {TEXT -1 2 "- " } {TEXT 35 17 "plex(v_1,...,v_p)" }{TEXT -1 37 " to denote a pure lexico graphic order" }}{PARA 14 "" 0 "" {TEXT -1 2 "- " }{TEXT 35 35 "lexdeg ([v_1,...,v_p],[w_1,...,w_q])" }{TEXT -1 31 " to denote 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 "user(P, L)" }{TEXT -1 4 " or " }{TEXT 35 13 "user(P, Q, L)" }{TEXT -1 37 " to denote a us er-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 644 "Spoly:=proc(i::posint,j::posint,F ::list(polynom),T::\{MonomialOrder,ShortMonomialOrder\}) local FF,r,S: \noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. A ll rights reserved.`;\ndescription `Last revised: June 19, 2008`;\n### ###################################################################### ###########\nFF:=F:\nS[i,j]:=Groebner:-SPolynomial(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'` en d if;\nend if;\nr:=Groebner:-Reduce(S[i,j],FF,T);\nif r<>0 then FF:=[o p(FF),r] end if;\nreturn map(RJgrobner:-reducepol,FF);\nend proc:\n" } }{PARA 0 "" 0 "" {TEXT -1 840 "3. Procedure \"Gbasis\" computes a Groe bner basis for the given ideal I generated by some polynomials [f1,f2, ...,fr] entered as the first argument F with respect to some monomial \+ order T entered as the second argument. It uses procedure Spoly to com pute the S-polynomials S(fi,fj), 1 <= i < j, and then the remainder of the division of S(fi,fj) with respect to the list F and the selected \+ monomial order. If the reminder is not zero, the list F gets updated b y the reminder. If the reminder is zero, the list is not changed. This way, the S-polynomials are computed and then reduced w.r.t. to F unti l every S-polynomial for any two polynomials in S produces a zero rema inder when reduced. Then, the procedure returns a Groebner basis for t he ideal I for the given monomial order.\n\nUsage:\nGbasis(F,plex(t,z, y,x));\nGbasis(F,lexdeg([x],[y,z]));\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 830 "Gbasis:=proc(F::list(polynom),T::\{MonomialOrder,ShortMonomia lOrder\}) local Floc,N,N2,i,j,flag1,flag2;\noptions `Copyright (c) 200 6-2008 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescr iption `Last revised: June 19, 2008`;\n############################### #####################################################\n### Warning: Th is 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:=no ps(Floc);\n for j from i+1 while flag2 do\n Floc:=RJgrobner:-Spo ly(i,j,Floc,T);\n N2:=nops(Floc);\n flag2:=evalb(j " 0 "" {MPLTEXT 1 0 327 "GbasisL:=proc(G ::list(polynom),L::list) local p;\noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `L ast revised: June 19, 2008`;\n######################################## ############################################\nreturn map(RJgrobner:-re ducepol,remove(has,G,L));\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 240 "5. Procedure minimalGbasis computes a minimal Groebner basis from the given Groebner basis G (first argument) and for the given monomia l order T (second argument).\n\nUsage:\nminimalGbasis(Gx,plex(z,y,x)); \nminimalGbasis(Gx,lexdeg([z],[y,x]));\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 712 "minimalGbasis:=proc(G::list(polynom),T::\{MonomialOr der,ShortMonomialOrder\}) local keepinG,i,p,lp,Gp,lGp,r,co;\noptions ` Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights r eserved.`;\ndescription `Last revised: June 19, 2008`;\n############## ###################################################################### \nkeepinG:=[]:\nfor i from 1 to nops(G) do\n p:=G[i];\n lp:=Groebner :-LeadingMonomial(p,T);\n Gp:=remove(member,G,\{p\}):\n lGp:=map(Gro ebner:-LeadingMonomial,Gp,T);\n r:=Groebner:-Reduce(lp,lGp,T);\n if \+ r<>0 then \n co:=Groebner:-LeadingCoefficient(p,T);\n \+ p:=p/co;\n keepinG:=[op(keepinG),p] \n end if;\nend do:\nr eturn map(RJgrobner:-reducepol,keepinG);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 213 "6. Procedure reducedGbasis computes a reduced Groebne r basis from the given minimal Groebner basis Gmin (first argument) an d for the given monomial order T (second argument).\n\nUsage:\nreduced Gbasis(G,plex(z,y,x));\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 593 "reduce dGbasis:=proc(Gmin::list(polynom),T::\{MonomialOrder,ShortMonomialOrde r\}) local Gminp,g,Gming,gp,co;\noptions `Copyright (c) 2006-2008 by R afal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Las t revised: June 19, 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),gp/co]\n end if;\nend do;\nreturn \+ map(RJgrobner:-reducepol,Gminp);\nend proc: \n" }}{PARA 0 "" 0 "" {TEXT -1 241 "7. Procedure completelyreducedGbasis computes a complete ly reduced Groebner basis from the given reduced Groebner basis Gred ( first argument) and for the lex order T (second argument).\n\nUsage:\n completelyreducedGbasis(reducedGx,plex(z,y,x));\n" }}{PARA 0 "> " 0 " " {MPLTEXT 1 0 900 "completelyreducedGbasis:=proc(Gred::list(polynom), T::\{MonomialOrder,ShortMonomialOrder\}) local p,l,flag,Lloc,Lnop,r,ke ep,order;\noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Ja ne Liu. All rights reserved.`;\ndescription `Last revised: June 19, 20 08`;\n################################################################ #####################\nif not member(op(0,T),\{plex\}) then error `mon omial order must be plex` end if;\n################################### ##################################################\nkeep:=[]:\nLloc:=G red:\nl:=combinat[permute]([op(1..nops(T),T)]);\nfor p in Lloc do\n L nop:=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),expan d(p*Groebner:-LeadingCoefficient(p,T))] \nend if; \nend:\nreturn map(R Jgrobner:-reducepol,keep);\nend proc:" }}{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 implictl y as f1 = f1(x0,y0) = 0 at a point (x0,y0).\n\nUsage:\n\nf3:=condition (f1);\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 730 "condition:=proc(f1::pol ynom) local m:\noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz a nd Jane Liu. All rights reserved.`;\ndescription `Last revised: June 1 9, 2008`;\n########################################################### ######################################\nif nops(indets(f1)) < 2 then e rror `polynomial in two variables x0 and y0 was expected as input` end if:\nif not evalb(\{x0,y0\} subset indets(f1)) then \n error `indet erminates x0 and y0 were expected in the input polynomial` \nend if:\n ###################################################################### ###########################\nm:=subs(\{y=y0,x=x0\},subs(y(x)=y,solve(d iff(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. Procedur e 'condition2' computes a polynomial that gives a normal line to a pla nar curve defined parametrically X = X(t) and Y = Y(t) via two polynom ials of t.\n\nUsage:\nFor example, we can define Bezier cubic parametr ically 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 ra dius r located at a point (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 "\nwill be a polynomial that gives the equation of a normal line to the cubic. Polynomial f4 will contain variables x,y an d t." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 724 "condition2:=proc(f1::polynom,f2::polynom) local Xp,Yp:global X, Y;\noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revised: June 19, 2008`;\n# ###################################################################### ##################\n#if not evalb(member(t,indets(f1)) and member(X,in dets(f1))) then \n# error `indeterminates in f1 must include X and t ` end if:\n#if not evalb(member(t,indets(f2)) and member(Y,indets(f2)) ) then \n# error `indeterminates 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 po int located along a line 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 l ine. \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 762 "condi tion3:=proc(X::algebraic,Y::algebraic,Z::algebraic) local R0,V1,V2,N,R :\noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. \+ All rights reserved.`;\ndescription `Last revised: June 19, 2008`;\n## ###################################################################### #########################\n### Computes cooordinates x,y,z of a point \+ located\n### along a line normal to the surface defined\n### parametri cally as X=X(s,t), Y=Y(s,t), Z=Z(s,t)\n### with a running line paramet er being 'u'\nR0:=;\nV1:=map(diff,,s);\nV2:=map(diff,,t);\nN:=LinearAlgebra:-CrossProduct(V1,V2);\nN:=map(expand,matrix (3,1,['u'*N[1],'u'*N[2],'u'*N[3]]));\nR0:=convert(R0,matrix);\nR:=eval m(N+R0);\nexpand(x-R[1,1]),expand(y-R[2,1]),expand(z-R[3,1]);\nend pro c:\n" }}{PARA 0 "" 0 "" {TEXT -1 122 "11. Procedure 'maxdegree' comput es a total degree of the given multivariate polynomial f for the given monomial order T.\n " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 509 "maxdegree :=proc(f::polynom,T::\{MonomialOrder,ShortMonomialOrder\}) local degre es,c,m,L,ff;\noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revised: June 19, 2008`;\n############################################################# ####################################\nff:=expand(f):\nc,m:=Groebner:-L eadingTerm(ff,T);\nif nops(indets(m))>1 then\n L:=[op(m)];\n degre es:=`+`(op(map(degree,L)));\nelse\n degrees:=degree(m);\nend if;\nre turn degrees;\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 195 "12. Proced ure 'maxtotaldegree' returns maximum total degree of a multivariate po lynomial. It uses any monomial order to just sort monomials for the pu rpose of computation of maximum total order.\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 599 "maxtotaldegree:=proc(f::polynom,T::\{MonomialOrder,S hortMonomialOrder\}) local degrees,c,m,L,ff;\noptions `Copyright (c) 2 006-2008 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndes cription `Last revised: June 19, 2008`;\n############################# ####################################################################\n ff:=expand(f):\ndegrees:=[]:\nwhile ff<>0 do\nc,m:=Groebner:-LeadingTe rm(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),degr ee(m)];\nend if;\nff:=ff-c*m;\nend do;\nreturn max(op(degrees));\nend \+ proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 134 "13. Procedure 'maxmindegree' \+ returns the highest and the lowest degree of a multivariate polynomial f for the given monomial order T.\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 616 "maxmindegree:=proc(f::polynom,T::\{MonomialOrder,ShortMonomialO rder\}) local degrees,c,m,L,ff;\noptions `Copyright (c) 2006-2008 by R afal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Las t revised: June 19, 2008`;\n########################################## #######################################################\nff:=expand(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)];\nend \+ if;\nff:=ff-c*m;\nend do;\nreturn [max(op(degrees)),min(op(degrees))]; \nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 134 "14. Procedure 'homogeni ze' homogenizes polynomial f for the given order T using a new indeter minate 'h' entered as the last argument.\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 638 "homogenize:=proc(f::polynom,T::\{MonomialOrder,Short MonomialOrder\},h::\{name,symbol\}) local fh,ff,m,L,deg,c,maxdeg,monde g;\noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revised: June 19, 2008`;\n# ###################################################################### ##########################\nmaxdeg:=RJgrobner:-maxtotaldegree(f,T);\nf h:=0:\nff:=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(d egree,L)));\nelse\n mondeg:=degree(m);\nend if;\nfh:=fh+c*m*h^(maxde g-mondeg);\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 genera te 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 red uced Groebner basis GB for the ideal J = with re spect 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 496 "RadicalMembership:=proc(f::polynom,F::list(polynom)) local J,yy,G B,vars;\noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revised: June 19, 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 560 "reducti on:=proc(f::polynom) local vars,n,PD,ff1,i,q:\noptions `Copyright (c) \+ 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights reserved.`;\nde scription `Last revised: June 19, 2008`;\n############################ ##################################################################### \nvars:=sort([op(indets(f))]);\nn:=nops(vars):\nPD:=map(factor@expand, [seq(diff(f,vars[i]),i=1..n)]);\nff1:=evala(Gcd(f,PD[1]));\nif n=1 the n 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);\nen d proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 107 "17. Computation of a sum I \+ + J of ideals I = and J = as in Cox et a l.\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 generate \+ ideal I = and polynomials g1,g2,...,gs entered as a lis t G that generate ideal J = .\n\nAlgorithm:" }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 281 "1. Return 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 333 "SumOfIdeals:=proc(F::list(polynom) ,G::list(polynom)) local FG:\noptions `Copyright (c) 2006-2008 by Rafa l Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last r evised: June 19, 2008`;\n############################################# ####################################################\nFG:=[op(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 ideals I = \+ and J = as in Cox et al.\n\nGiven:" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 187 "1. Polyn omials f1,f2,...,fr entered as a list F that generate ideal I = and polynomials g1,g2,...,gs entered as a list G that generat e 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 C ox 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)];\nProductOfIdeals( F,G);\n " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 502 "ProductOfIdeals:=proc( F::list(polynom),G::list(polynom)) local nF,nG,i,j,FG,figj:\noptions ` Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights r eserved.`;\ndescription `Last revised: June 19, 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 pr oc:\n" }}{PARA 0 "" 0 "" {TEXT -1 124 "19. Computation of an interesec tion I cap J of two ideals I = and J = a s 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 t hat generate ideal I = and polynomials g1,g2,...,gs ent ered 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 ideal in k[x1,x2,...,xn,t] with respect to a lex \+ order in which t > x1 > x2 > ... >xn.\n2. Return only those polynomial s from the list GB which do not contain t, that is, belong 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 1167 "IntersectionOfIdeals:=proc(F::list(polynom ),G::list(polynom)) local i,j,nF,nG,t,vars,GB,tF,tG,tFtG;\noptions `Co pyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights res erved.`;\ndescription `Last revised: June 19, 2008`;\n################ ###################################################################### ###########\nnF:=nops(F);\nnG:=nops(G);\n#vars:=[map(indets,F),map(ind ets,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:=convert(map(op,[op(ma p(indets,F)),op(map(indets,G))]),set):\n#vars:=convert(convert(map(op, [op(map(indets,F)),op(map(indets,G))]),set),list):\n################## ###################################################################\nv ars:=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(vars)));\nRJgrobner:-Gb asisL(GB,[t]);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 246 "20. Compu tation of a LCM of two multivariate polynomials f and g by computing i nteresection 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 genera ted by the LCM(f,g).\n\nGiven:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 118 "1. Polynomials f and g whose LCM is to b e 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 Groebner basis GB for th e intersection I cap J, which is a principal ideal generated by the LC M(f,g) using our procedure IntersectionOfIdeals.\n2. Return the only g enerator 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;\nLeastCommonMultiple(f,g);\n" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 366 "LeastCommonMultiple:=proc(f::polyn om,g::polynom) local F,G;\noptions `Copyright (c) 2006-2008 by Rafal A blamowicz and Jane Liu. All rights reserved.`;\ndescription `Last revi sed: June 19, 2008`;\n################################################ #################################################\nF:=[f]:\nG:=[g]:\nr eturn op(RJgrobner:-IntersectionOfIdeals(F,G));\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 160 "21. Computation of a GCD of two multivariate p olynomials f and g by using formula (2) on page 187 rather than built \+ into Maple procedure Gcd used above.\n\nGiven:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 133 "1. Polynomials f and g w hose 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 = and J = . Co mpute LCM(f,g) using procedure LeastCommonMultiple defined above.\n2. \+ Return the ration (f*g)/LCM(f,g). \n" }}{PARA 0 "" 0 "" {TEXT -1 56 "U sage:\n\nf:=x^2*y;\ng:=x*y^2;\nGreatestCommonDivisor(f,g);\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 411 "GreatestCommonDivisor:=proc(f::polynom,g ::polynom) local fg,lcm,q;\noptions `Copyright (c) 2006-2008 by Rafal \+ Ablamowicz and Jane Liu. All rights reserved.`;\ndescription `Last rev ised: June 19, 2008`;\n############################################### ##################################################\nlcm:=RJgrobner:-Le astCommonMultiple(f,g):\nfg:=f*g;\ndivide(fg,lcm,'q');\nreturn RJgrobn er:-reducepol(q);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 292 "22. Co mputation of the ideal quotient I : J of two ideals I = and J = using an algortihm described on page 194 as in Cox et al..\n\nGiven:\n\n1. Polynomials f1,f2,...,fr entered as a lis t 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, w e 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 1998 "QuotientOfIdeals:=proc(F::list(polynom) ,G::list(polynom)) local i,j,r,s,H,Hg,Hg1Hg2,Hg1Hgs,q;\noptions `Copy right (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights reser ved.`;\ndescription `Last revised: June 19, 2008`;\n################## ###################################################################### #########\nr:=nops(F);\ns:=nops(G);\n#return r,s;\n################### ####################################################\n#STEP 1: Computi ng bases H[i], i=1,...,s, for I cap \n######################### ##############################################\nfor i from 1 to s do\n H[i] := RJgrobner:-IntersectionOfIdeals(F,[G[i]])\nend do:\n#retur n 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 no ps(H[i]) do \n divide(H[i][j],G[i],'q'):\n Hg[i]:=[o p(Hg[i]),q]:\n end do:\nend do:\n#return Hg[1],Hg[2];\n############ ##########################################################\n#STEP 3: C omputing a basis for I : J by applying recursively\n# the inter section 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########################### ############################################\nHg1Hg2 := RJgrobner:-Int ersectionOfIdeals(Hg[1],Hg[2]);\nif s = 2 then return Hg1Hg2 end if:\n ###################################################################### #\n#Case when s > 2\n################################################# ######################\nHg1Hgs:=Hg1Hg2:\nfor i from 3 to s do\n Hg1 Hgs:= RJgrobner:-IntersectionOfIdeals(Hg1Hgs,Hg[i])\nend do:\nreturn m ap(RJgrobner:-reducepol,Hg1Hgs);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 778 "23. Procedure 'Beziercubic' defines a Bezier cubic in pa rametric form [X = X(t), Y = Y(t)]. It returns functions X(t) and Y(t) as expressions followed by a list of coordinates of four cotrol point s of type list(list), in that order. It can be used to create a random Bezier cubic by calling it as\n\nBeziercubic(r) \n\nwhere r is a rang e, e.g., -3..5, in which random integer coordinates of four control po ints [x1,y1], [x2,y2], [x3,y3], [x4,y5] must be contained. If r is a l list of four lists as in [[x1,y1], [x2,y2], [x3,y3], [x4,y5]], then th ese coordinates are used for the control points. In either case, the l ist [[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 sec ond item in the output.\n " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 1218 "Be ziercubic:=proc(r::\{range,list(list)\}) local dim,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 `Copy right (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights reser ved.`;\ndescription `Last revised: June 19, 2008`;\n################## ###################################################################### #########\ndim:=2:\np0,p1,p2,p3:=\n matrix(dim,1,(i,j)->P0||i||j) ,matrix(dim,1,(i,j)->P1||i||j),\n matrix(dim,1,(i,j)->P2||i||j),m atrix(dim,1,(i,j)->P3||i||j);\nG:=linalg:-augment(p0,p1,p2,p3);\nMB:=m atrix(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 no ps(r) <> 4 then \n error `argument of type list(list) must contai n exactly four lists with xy-coordinates of four control points`\n e nd 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,x 4,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,y4]]:\nX,Y:=subs(S,evalm(X X))[1,1],subs(S,evalm(XX))[2,1];\nreturn X,Y,L;\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 590 "24. Procedure 'implicitBeziercubic' reads in f rom the database a polynomial in variables x1,y1,x2,y2,x3,y3,x4,y4, an d x,y which gives a Bezier cubic in implicit form. Points [x1,y1], [x2 ,y2], [x3,y3], [x4,y4] are four control points of the cubic. This proc edure can be used without any argument, like i\n\nimplicitBeziercubic( );\n\nand then it returns the implicit polynomial. It can also be used in one argument L of the type list(list) where L is a list of four li sts [x1,y1], [x2,y2], [x3,y3], [x4,y4] that give the control point:\n \nimplicitBeziercubic([[x1,y1], [x2,y2], [x3,y3], [x4,y4]]);\n" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 739 "implicitBeziercubic:=proc() local \+ p,L;\noptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Li u. All rights reserved.`;\ndescription `Last revised: June 19, 2008`; \n#################################################################### #############################\np:=readlib('_implicitbezierpolynomial') ;\nif nargs=0 then return p end if;\nif not type(args[1],list(list)) t hen\n error `first argument must be a list of exactly four lists [[x 1,y1],[x2,y2],[x3,y3],[x4,y4]]` \nend if;\nL:=map(op,args[1]);\nif nop s(L)<>8 then\n error `first argument must be a list of exactly four \+ lists [[x1,y1],[x2,y2],[x3,y3],[x4,y4]]`\nend if:\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. Procedu re 'curvature' computes curvature of a paramerized curve in R^3, that \+ is, a curve given as [X,Y,Z] where X,Y,Z are expressions in t that giv e points (x,y,z) on the curve.\nWhen X,Y,Z, are functions of t, they m aust be entered as X(t),Y(t), and Z(t):\n\ncurvature(X,Y,Z);\ncurvatur e(X(t),Y(t),Z(t));\n " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 804 "curvature :=proc(X::\{polynom(anything,t),algebraic\},Y::\{polynom(anything,t),a lgebraic\},Z::\{polynom(anything,t),algebraic\}) \n local be ta,beta1,beta2,beta3,beta12,normbeta1,normbeta12:\noptions `Copyright \+ (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All rights reserved.`; \ndescription `Last revised: June 19, 2008`;\n######################## ###################################################################### ###\nbeta:=;\nbeta1:=map(simplify,map(diff,beta,t));\nbeta2:=ma p(simplify,map(diff,beta1,t));\nbeta3:=map(simplify,map(diff,beta2,t)) ;\nbeta12:=map(simplify,LinearAlgebra:-CrossProduct(beta1,beta2));\nno rmbeta12:=LinearAlgebra:-VectorNorm(beta12,2,conjugate=false);\nnormbe ta1:=LinearAlgebra:-VectorNorm(beta1,2,conjugate=false);\nreturn combi ne(normbeta12/normbeta1^3,trig);\nend proc:\n" }}{PARA 0 "" 0 "" {TEXT -1 69 "Last procedure is the 'setup' procedure. It is automatica lly loaded.\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 370 "setup:=proc() \nl ocal x,y,i,j;\nglobal libname,`convert/set_to_pts`;\n################# ###################################################################\no ptions `Copyright (c) 2006-2008 by Rafal Ablamowicz and Jane Liu. All \+ rights reserved.`;\ndescription `Last revised: June 19, 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 the plane or in the space. \n\nUs age:\n\nS:=remove(has,map(allvalues,\{solve(\{op(L),g\},\{x,y\})\}),I) ;\nPTS:=map(convert,S,set_to_pts);\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 525 "printf(\"RJgrobner Version 7 (19 vi 2008) at your service\\n(c) 2003-2008 RA&JL, sorry, no warranty for anything!\\n\",%s);\nprintf( \"Load SINGULARPLURALlink for interface with Singular:Plural\\n(c) 200 3-2008 RA&BF\\n\",%s);\n############################################## #####\n`convert/set_to_pts`:=proc(S) local L,locsort:\nL:=convert(S,li st):\nlocsort:=(a,b)->lexorder(lhs(a),lhs(b));\nL:=sort(L,locsort);\nm ap(rhs,L);\nend proc:\n\n############################################# #######\nend proc: ###<< " 0 "" {MPLTEXT 1 0 11 "end module:" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 12 "savelibname;" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#Q7C:\\Maple11/Cliffordlib6\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "#march('delete',libname[1],RJgrobner);\n" }}}{EXCHG {PARA 0 " " 0 "" {TEXT -1 84 "Do not execute the next command unless \"savelibna me\" above returns \".../Cliffordlib\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 96 "savelib('RJgrobner'); #unremark and excute only if \" savelibname\" returns \".../Cliffordlib\" above" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 19 "with(LibraryTools);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#72%1ActivationModuleG%1AddFromDirectoryG%'AuthorG%'Brow seG%3BuildFromDirectoryG%/ConvertVersionG%'CreateG%'DeleteG%,FindLibra ryG%,PrefixMatchG%)PriorityG%%SaveG%-ShowContentsG%*TimestampG%4Update FromDirectoryG%*WriteModeG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "ShowContents(libname[1]);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7;7&Q *Bigebra.m6\"7(\"%2?\"#7\"#?\"\")\"#&G\"\"%\"# \\\"'G]I\"$x$7&Q/code_support.mF&7(F2F3\"#@\"\"!\"#e\"#9\"'n$>%\"$*[7& Q)Define.mF&7(F(F)F*F+FF\"#d\"'nc>\"$$[7&Q>P.mF&7(F(F)F*F+\"#`FC\"'d KC\"$\"G7&Q&GfG.mF&7(F2\"\"$\"\"(F4\"#=F5\"'O+u\"%[87&Q+matcompL.mF&7( F(F)F*F+\"#8FF\"'7_m\"&=X(7&Q+matquatR.mF&Fin\"'%yU(\"&I?#7&Q+matrealR .mF&Fin\"'`?U\"'Wj67&Q+Octonion.mF&7(F(F)F*F+FL\"\"%\"'fOm\"$P%7&Q,RJg robner.mF&7(F2F3\"#AFD\"#I\"#Q\"'0\\$)\"%\"4\"7&Q5SINGULARPLURALlink.m F&7(F2F4\"#:\"#;\"#S\"#C\"'v_AlternatingGroup_rem_table.mF&7(F2F3FC\"\"\"F_p\"#V\"' _Y8\"%@77&Q:_FiniteGroups_rem_table.mF&Feq\"'=PJ\"%eC7&Q6_Reynolds_rem _table.mF&Feq\"')y$G\"$L%7&Q<_SymmetricGroup_rem_table.mF&7(F2F3FCFfqF _p\"#U\"'6(e\"\"%%G#7&QA_generateGinvariants_rem_table.mF&Feq\"'whJ\"$ #>7&Q<_implicitbezierpolynomial.mF&7(F2F3FC\"#B\"#N\"#a\"'nO#)\"&Q7\"7 &Q+matcompR.mF&Fin\"'\"[<$\"&^M(7&Q+matquatL.mF&Fin\"'87E\"&9@#7&Q+mat realL.mF&Fin\"&!z6\"'9k67&Q%SP.mF&7(F(F)F*\"\"*F_p\"#G\"'ojJ\"%867&Q&T NB.mF&7(F2FXFdtF,\"#HFfp\"'$Q'R\"$,)" }}}{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~ver.~1 .03~for~CLIFFORD~et~al.~for~Maple~11G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%apCopyright~(c)~2002-2008~by~Rafal~Ablamowicz~and~Bertfried~Fauser .~All~rights~reserved.G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%=Last~revi sed:~March~10,~2007G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%!G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7-%/NamesInLibraryG%1change_helpfilesG%,chan ge_nameG%*copy_fileG%)get_TEXTG%(get_dirG%1insert_helppagesG%)makeLIST G%+modifyLISTG%0replace_in_fileG%&splitG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "NamesInLibrary(libname[1]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matrealL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Cl ifford.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q>_AlternatingGroup_rem _table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q<_SymmetricGroup_rem_t able.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q)Define.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q5SINGULARPLURALlink.m6\"" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#Q>P.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q<_impl icitbezierpolynomial.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Bigebra .m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matquatL.m6\"" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#Q6_Reynolds_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Cliplus.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Sch urFkt.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q:_FiniteGroups_rem_tabl e.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QA_generateGinvariants_rem_t able.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q%SP.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matcompR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #Q&TNB.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q/code_support.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matrealR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q,RJgrobner.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+O ctonion.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matcompL.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q&GfG.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matquatR.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 and saving to database _implici tbezierpolynomial that gives implicit form of a Bezier cubic. This pol ynomial is read then by the procedure implicitBeziercubic:\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*x2*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*y1*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+54*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*y4^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*y3*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*y 1*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*x 4^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*y2^2*x^2-9*y*x2*y4^2*x^2-8 1*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*y 3*x4-27*y2^2*x^2*x1*y4+54*y2^2*x^2*x2*y4-54*y2*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+81*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*x 3*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*y 1*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*y 3*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*x 2*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*x 1*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*x 2*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*y 1*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*x2*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*x1*y^2+27*y2^2*x^2*y1*x2-8 1*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*y 4+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*y 1*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-27*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*y2*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*y 2-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+54*x3*y3^2*x1*x4*y-54*x3*y 3^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*x2*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-8 1*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+18*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*y 1*x*x1*y3*x4*y+63*y1*x^2*x1*y3*y4-54*y1*x^2*x2*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*x1*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*y2*x*x3*y^2-18*x4*x3*y^2*y 4*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*y 3^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+2 7*y*x1^2*y2*x4*y3-6*y*y1*x4*x1^2*y4+27*y*x4*y2*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*y 3*y4*x-27*y*x1*x4*y2^2*x+27*y*x1*x4*y3^2*x+108*y*x1*y1*x3*x4*y3-54*y*x 1*y1*y4*x3^2-27*y*x1*y1*x4^2*y2-180*y*x1*x3*y2*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*y1*x3*y4*x2^2+54*y*y1*x4*y 4*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*x 1^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*y 2*x-9*y*y3*x4^2*y1*x+54*y*x4*y2*x^2*y3-18*y*x4*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*x 2*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*x 2-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*x 1*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+2 7*y*y3*x4*y4*x1^2+54*y*x2*x1*y2^2*x-18*y*x1*y3*x^2*y4-54*y*x1*y2*x^2*y 3+18*y*x1*y2*x^2*y4+9*y*x1*y4*x3*x4*y1-54*y*x2*x1*y2^2*x4+54*y1*x*x1*y 3^2*x4-18*y1*x^2*x3*y*y4+27*x2*x1*y4^2*x3*y-27*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*y1*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*x3*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*y 4*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*x3*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*x 1*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('_implicitbezierpolynomial' );" }}}{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(\"%2?\"#7\"#?\"\")\"#&G\"\"%\"#\\\"'G]I\"$x$7&Q/code_support.mF&7(F2F3\"#@\"\"! \"#e\"#9\"'n$>%\"$*[7&Q)Define.mF&7(F(F)F*F+FF\"#d\"'nc>\"$$[7&Q>P.m F&7(F(F)F*F+\"#`FC\"'dKC\"$\"G7&Q&GfG.mF&7(F2\"\"$\"\"(F4\"#=F5\"'O+u \"%[87&Q+matcompL.mF&7(F(F)F*F+\"#8FF\"'7_m\"&=X(7&Q+matquatR.mF&Fin\" '%yU(\"&I?#7&Q+matrealR.mF&Fin\"'`?U\"'Wj67&Q+Octonion.mF&7(F(F)F*F+FL \"\"%\"'fOm\"$P%7&Q,RJgrobner.mF&7(F2F3\"#AFD\"#I\"#Q\"'0\\$)\"%\"4\"7 &Q5SINGULARPLURALlink.mF&7(F2F4\"#:\"#;\"#S\"#C\"'v_AlternatingGroup_rem_table.mF&7( F2F3FC\"\"\"F_p\"#V\"'_Y8\"%@77&Q:_FiniteGroups_rem_table.mF&Feq\"'=PJ \"%eC7&Q6_Reynolds_rem_table.mF&Feq\"')y$G\"$L%7&Q<_SymmetricGroup_rem _table.mF&7(F2F3FCFfqF_p\"#U\"'6(e\"\"%%G#7&QA_generateGinvariants_rem _table.mF&Feq\"'whJ\"$#>7&Q<_implicitbezierpolynomial.mF&7(F2F3F^pFDF_ pFgq\"'g(\\)\"&e7\"7&Q+matcompR.mF&Fin\"'\"[<$\"&^M(7&Q+matquatL.mF&Fi n\"'87E\"&9@#7&Q+matrealL.mF&Fin\"&!z6\"'9k67&Q%SP.mF&7(F(F)F*\"\"*F_p \"#G\"'ojJ\"%867&Q&TNB.mF&7(F2FXFatF,\"#HFfp\"'$Q'R\"$,)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "NamesInLibrary(libname[1]);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matrealL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Clifford.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q>_A lternatingGroup_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q<_S ymmetricGroup_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q)Defi ne.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q5SINGULARPLURALlink.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q>P.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q<_implicitbezierpolynomial.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Bigebra.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+mat quatL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q6_Reynolds_rem_table.m6 \"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Cliplus.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+SchurFkt.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q :_FiniteGroups_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QA_ge nerateGinvariants_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q% SP.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matcompR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q&TNB.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#Q/code_support.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matrealR.m6 \"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q,RJgrobner.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Octonion.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #Q+matcompL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q&GfG.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matquatR.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 48 "RJgrobner Ver sion 7 (19 vi 2008) at your service" }}{PARA 6 "" 1 "" {TEXT -1 53 "(c ) 2003-2008 RA&JL, sorry, no warranty for anything!" }}{PARA 6 "" 1 " " {TEXT -1 58 "Load SINGULARPLURALlink for interface with Singular:Plu ral" }}{PARA 6 "" 1 "" {TEXT -1 19 "(c) 2003-2008 RA&BF" }}{PARA 12 " " 1 "" {XPPMATH 20 "6#7<%,BeziercubicG%'GbasisG%(GbasisLG%6GreatestCom monDivisorG%5IntersectionOfIdealsG%4LeastCommonMultipleG%0ProductOfIde alsG%1QuotientOfIdealsG%*RJversionG%2RadicalMembershipG%&SpolyG%,SumOf IdealsG%8completelyreducedGbasisG%*conditionG%+condition2G%+condition3 G%*curvatureG%+homogenizeG%4implicitBeziercubicG%*maxdegreeG%-maxminde greeG%/maxtotaldegreeG%.minimalGbasisG%.reducedGbasisG%*reducepolG%*re ductionG" }}}{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~11~ Small~Package~for~Grobner~BasesG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%j nLast~revised:~June~19,~2008~(Source~file:~RJgrobner_M11_07.mws)G" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#%gnCopyright~2006-2008~by~Rafal~Ablamo wicz~(*)~and~Jane~Liu~($)G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%!G" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#%H(*)~Department~of~Mathematics,~Box~5 054G" }}{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~~~~http://math.tntech.edu/rafal/G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%V($)~Department~of~Civil~and~Environmental~Engine eringG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%gn~~~~Tennessee~Technologic al~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.tntech.edu/rafal/G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%!G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%[o++++++++++++T his~is~RJgrobner~for~Maple~11~version~7++++++++++++G" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 25 "C ookeville, June 19, 2008" }}}}{MARK "22 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }