{VERSION 4 0 "IBM INTEL LINUX22" "4.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 Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 256 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 257 "" 1 24 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 258 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 259 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 260 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 261 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 262 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 264 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 265 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 266 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 267 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 268 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 269 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 270 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 271 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 272 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 273 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 274 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 275 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 276 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 277 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 278 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 279 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 280 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 281 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 282 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 283 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 284 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 285 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 286 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 287 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 288 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 289 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 290 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 291 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 292 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 293 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 294 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 295 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 296 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 297 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 298 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 299 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 300 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 301 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 302 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 303 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 304 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 305 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 306 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 307 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }1 0 0 0 8 4 0 0 0 0 0 0 -1 0 }{PSTYLE "Head ing 2" 3 4 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }0 0 0 -1 8 2 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 256 0 "" }{TEXT 257 29 "Tutorial for the gbr5 package" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 32 "By William Gryc, Amherst College" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 843 " Well, you finally di d it. After hours of deliberation and procrastination, you have final ly downloaded and saved the gbr5 files on your computer, just like you r professor asked you to. Now you are expecting a long-winded and com plex tutorial. Well, you aren't getting it here! This tutorial is de signed to be clear and quick, so you can start working as soon as poss ible. If you want longer explanations, try looking at the help access ed by opening the worksheet \"gbr5hlp.mws\" which, hopefully, you also downloaded. You'll be sure to find whatever you want to know there. \+ Also, please be advised that some of the commands in the package are \+ slow compared to regular Maple commands, but they should be adequate i n computing the simpler examples in \"Ideals, Varieties, and Algorithm s.\" But, now in the spirit of being quick, onto...." }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 26 "The Basics: Loading `gbr5'" }}{PARA 0 "" 0 "" {TEXT -1 344 "Even though you managed to get this tutorial to run ning, that's not all there is to it. There's still the issue of loadi ng the package. This is not too terribly difficult, however. Be sure you've also downloaded \"gbr5.mpl\", \"gbr5hlp.mws\". Then, assuming that you started Maple from the directory containing these files, the n all you type is" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "read(`gbr5.mpl`):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 247 "Please note that to use the interactive tutorial, you ju st have to press Enter (or Return, depending on your keyboard) on each Maple input line. After hitting Enter on the previous Maple input li ne, the package is loaded and we are ready to work." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 124 "Also note that reading in \"gbr5.mpl\" generat es two warning messages concerning norm and trace. These can be safel y ignored." }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 27 "ring() and Relate d Commands" }}{PARA 0 "" 0 "" {TEXT -1 567 "The most basic command in \+ the package is ring(). This command sets the ring and the monomial or der (see Chapter 2, Section 2 of the text) which most other commands i n the will use. In fact, if you try to use any commands without first setting ring(), you'll get a nasty error message saying that you must set ring() first. The arguments for ring() are a monomial order and \+ a variable list. The valid monomial orders are lex, grlex, grevlex (s ee Chapter 2 Section 2), [k,n] (the kth elimination order on n variabl es; see Exercise 12d in Chapter 2 Section 2), and [" }{TEXT 268 2 "v1 " }{TEXT -1 5 ",...," }{TEXT 269 2 "vn" }{TEXT -1 168 "]. The last or der is a matrix order and is not discussed in the text explicitly. Sa y you were working in the ring k[x1,...,xn]. Then a matrix order woul d consist of " }{TEXT 260 1 "n" }{TEXT -1 31 " linearly independent ve ctors \{" }{TEXT 258 2 "v1" }{TEXT -1 5 ",...," }{TEXT 259 2 "vn" } {TEXT -1 17 "\} each of length " }{TEXT 261 2 "n," }{TEXT -1 13 " such that x^" }{XPPEDIT 18 0 "alpha;" "6#%&alphaG" }{TEXT -1 5 " > x^" } {XPPEDIT 18 0 "beta;" "6#%%betaG" }{TEXT -1 5 " iff " }{TEXT 262 2 "v1 " }{TEXT -1 1 "*" }{XPPEDIT 18 0 "alpha;" "6#%&alphaG" }{TEXT -1 3 " > " }{TEXT 263 3 "v1*" }{XPPEDIT 18 0 "beta;" "6#%%betaG" }{TEXT -1 4 " or " }{TEXT 264 2 "v1" }{TEXT -1 1 "*" }{XPPEDIT 18 0 "alpha;" "6#%&a lphaG" }{TEXT -1 3 " = " }{TEXT 265 3 "v1*" }{XPPEDIT 18 0 "beta;" "6# %%betaG" }{TEXT -1 5 " and " }{TEXT 266 2 "v2" }{TEXT -1 1 "*" } {XPPEDIT 18 0 "alpha;" "6#%&alphaG" }{TEXT -1 3 " > " }{TEXT 267 2 "v2 " }{TEXT -1 1 "*" }{XPPEDIT 18 0 "beta;" "6#%%betaG" }{TEXT -1 351 " , etc. All monomials orders the package deals with can be written as m atrix orders. As you will see in a moment, this is how the package se ts monomial orders (except for lex and grevlex, which use the built in Maple orders plex and tdeg, respectively). So, say you wanted to set the ring k[x,y,z] and use the monomial order grevlex. So, you type \+ " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ring(grevlex, [x,y,z]); " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 119 "Then you change your mind an d decide on a matrix order with the simplest linearly independant vect ors you can think of." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "ri ng([[1,0,0],[0,1,0],[0,0,1]], [x,y,z]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 183 "Notice that grevlex was not capitalized. This is import ant, as lex, grlex, and grevlex must be entered exactly as shown here, in all lower case letters, for ring() to work correctly." }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 531 "The ring() comman ds creates term orders in two ways. For lex and grevlex, it uses the \+ terms orders plex and tdeg from the Groebner package. However, for gr lex and elimination orders, ring() uses matrices created by the grlex( ) and elimination() commands. These are the \"related commands\" that the section title refers to. The lone argument for grlex() is the in teger that is the number of variables in the ring. So, if we were wor king in k[x1,x2,x3,x4] and wanted the matrix that yields grevlex order over this ring, we'd type" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "grlex(4);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 206 "Notice that grle x(), as well as elimination(), does not depend on the current ring and monomial order set by ring(). elimination() works differently; it n eeds one extra argument. The form is elimination(" }{TEXT 270 3 "k,n " }{TEXT -1 9 "), where " }{TEXT 271 1 "n" }{TEXT -1 44 " is the numbe r of variables in the ring and " }{TEXT 272 1 "k" }{TEXT -1 175 " is t he number of variables to eliminate. So, to get the matrix that gives a monomial order that eliminates the first three variables of a ring \+ with five variables, you enter" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "elimination(3,5);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 25 "And \+ you have your matrix." }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 22 "The Di vision Algorithm" }}{PARA 0 "" 0 "" {TEXT -1 482 "One of the major ste ps in computing Groebner bases is computing remainders via the Divisio n algorithm. The command div_alg() implements this algorithm. The tw o arguments of div_alg are a polynomial and a set of polynomials. div _alg returns a list with two elements: the first element is the remai nder, and the second is a list of quotients, ordered in correspondence with the ordering of the given set of polynomials. Let's use Problem 1a in Chapter 2 Section 3 for an example." }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 19 "ring(grlex, [x,y]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 57 "div_alg(x^7*y^2 + x^3*y^2 - y + 1, [x*y^2 - x, x - y^ 3]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 70 "Notice div_alg() divides \+ with respect to the term order set by ring()." }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 41 "Computing Groebner Bases without Matrices" }}{PARA 0 "" 0 "" {TEXT -1 465 "This package provides four different ways to c ompute Groebner bases. The first, slowbasis_gb implements a naive ver sion of Buchberger's algorithm (see Chapter 2 Section 2). The paramet er of this command is a list of polynomials [f1,...,fs] slowbasis_gb \+ then returns a list of polynomials that form a Groebner basis for with respect to the termorder set by ring. For an example, we 'll use Exercise 2b from Chapter 2 Section 7. First we set the ring. " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "ring(lex, [x,y]);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 32 "Then we find the Groebner basis." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "slowbasis_gb([x^2 + y, x^ 4 + 2*x^2*y + y^2 + 3]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 165 "Noti ce that the steps of calculation were also printed out, as well as how many divisions were performed. To prevent this, just type \"nosteps \" as a second argument." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 58 "slowbasis_gb([x^2 + y, x^4 + 2*x^2*y + y^2 + 3], nosteps);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 67 "Sometimes slowbasis_gb gets out of hand. Consider this example:. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ring(grevlex, [x,y,z]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "basisprime := [x^3 - z^2, y^3 + z, x^2*y + x*y^2];" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "slowbasis_gb(basisprime); " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 338 "The returned basis is quite \+ unnecessarily repetitive. The reason for this repetition is that the \+ algorithm is using G' as opposed to G is division (see Buchberger's al gorithm in Chapter 2 Section 7). A second command, altbasis_gb uses G instead. Notice that the repetion is now gone, and the number of div isions decreases dramatically." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "altbasis_gb(basisprime);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 279 "While altbasis_gb() can dramatically improve performance, we can \+ still do better. The quickbasis_gb() command implements the improveme nts to Buchberger's algorithm as detailed in Chaptert 2 Section 9. Le t's use two examples to show how quickbasis_gb can outperform altbasis _gb:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "basis1 := [x^2, y^4 ];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "altbasis_gb(basis1); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "quickbasis_gb(basis1); " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 283 "Clearly, basis1 is already a Groebner basis by definition, and yet altbasis_gb() still performs a \+ division. quickbasis_gb() cuts out this division by noticing that x^2 and y^4 are relatively prime, and thus no divisons need to be perform ed (see Propostion 4 of Chapter 2 Section 9)." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "basis2 := [x^2, x*y^3, x^2*y^3];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "altbasis_gb(basis2);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "quickbasis_gb(basis2);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 319 "Again, quickbasis_gb() is able to cut ou t a division, even though none of the leading terms of basis2 are rela tively prime. However, notice that the third leading term, x^2y^3, di vides the LCM of x^2 and xy^3 (in fact, x^2y^3 is the LCM of x^2 and x y^3). By Propostion 10 of Chapter 2 Section 9, if the remainders of \+ " }{TEXT 273 1 "S" }{TEXT -1 16 "(x^2, xy^3) and " }{TEXT 274 1 "S" } {TEXT -1 52 "(x^2, x^2y^3) are both calculated, the remainder of " } {TEXT 275 1 "S" }{TEXT -1 100 "(xy^3, x^2y^3) need not be calculated. \+ Thus, quickbasis_gb is implementing this second improvement." }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 198 "It shoul d be noted, however, that Maple's built-in gbasis() command is faster \+ than quickbasis_gb(). However, quickbasis_gb() should be fast enough \+ for most of the examples and problems in the text." }}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 38 "Minimizing and Reducing Groebner bases" }} {PARA 0 "" 0 "" {TEXT -1 160 "For added convenience, there are also co mmands to minimize and reduce your computed Groebner bases. For an ex ample, let's use Problem 9 of Chapter 2 Section 7." }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 21 "ring(lex, [x,y,z,w]);" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 61 "basis := [3*x - 6*y - 2*z, 2*x - 4*y + 4*w, x \+ - 2*y - z - w];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "basispri me := quickbasis_gb(basis, nosteps);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 208 "To get a minimal Groebner basis from this, we can use the min_ gb() command. min_gb() takes a list of polynomials that form a Groebn er basis under ring() as its lone argument. So, to make basisprime mi nimal," }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "basisprime :=min_ gb(basisprime);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 336 "Getting a red uced Groebner basis from this new basisprime, we use the red_gb comman d. red_gb() takes a list of polynomials that for a MINIMAL Groebner b asis under ring() as its argument. If the basis isn't a minimal Groeb ner basis, red_gb() will protest and will refuse to do its job. So, t o make basisprime a reduced Groebner basis," }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "red_gb(basisprime);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 34 "And the Groebner basis is reduced." }}}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 38 "Computing Groebner Bases with Matrices" }}{PARA 0 "" 0 "" {TEXT -1 60 "Consider the following type of problem: You ha ve an ideal <" }{TEXT 284 9 "f1,...,fs" }{TEXT -1 40 "> and compute a \+ Groebner basis for it, \{" }{TEXT 285 9 "g1,...,gt" }{TEXT -1 12 "\}. \+ Since <" }{TEXT 286 9 "f1,...,fs" }{TEXT -1 5 "> = <" }{TEXT 287 9 " g1,...,gt" }{TEXT -1 12 ">, for each " }{TEXT 288 2 "fi" }{TEXT -1 15 ", there exists " }{TEXT 289 9 "a1,...,at" }{TEXT -1 11 " such that " }{TEXT 290 2 "fi" }{TEXT -1 3 " = " }{TEXT 291 4 "a1g1" }{TEXT -1 3 " \+ + " }{TEXT 292 4 "a2g2" }{TEXT -1 9 " + ... + " }{TEXT 293 4 "atgt" } {TEXT -1 65 ", and vice versa. For the first problem, it is easy to f ind the " }{TEXT 294 9 "a1,...,at" }{TEXT -1 8 " since \{" }{TEXT 296 8 "g1,..,gt" }{TEXT -1 55 "\} is a Groebner basis the division algorit hm gives the " }{TEXT 295 2 "ai" }{TEXT -1 301 ". There is a function in the package, quot_mx(), that does exactly this. quot_mx() takes t wo arguments. The first is a list of polynomials that generate an ide al, the second is a Groebner basis under the termorder set in ring() t hat generates the same ideal. The output is a matrix Q where Q is a \+ " }{TEXT 303 1 "s" }{TEXT -1 3 " x " }{TEXT 304 1 "t" }{TEXT -1 12 " m atrix and " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 1 "[" }{TEXT 297 2 "f1" }{TEXT -1 15 "] [" }{TEXT 300 2 "g1" }{TEXT -1 1 "]" }}{PARA 0 "" 0 "" {TEXT -1 1 "[" }{TEXT 298 2 " f2" }{TEXT -1 15 "] [" }{TEXT 301 2 "g2" }{TEXT -1 1 "]" } }{PARA 0 "" 0 "" {TEXT -1 20 "[...] = Q * [...]" }}{PARA 0 "" 0 "" {TEXT -1 24 "[...] [...]" }}{PARA 0 "" 0 "" {TEXT -1 1 "[ " }{TEXT 299 2 "fs" }{TEXT -1 16 "] [" }{TEXT 302 2 "gt" }{TEXT -1 1 "]" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 31 "Consider the following example:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ring(grevlex, [x,y,z]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "gbase := quickbasis_gb([x - z^4, y - z^5], nosteps );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "Q := quot_mx([x - z^4 , y - z^5], gbase);" }}}{PARA 0 "" 0 "" {TEXT -1 133 "Notice that Q is not unique, as the most obvious choice for Q is not the matrix given. Let's verify that Q has the desired property." }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 26 "base := matrix(6,1,gbase);" }}}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "simplify(m ultiply(Q,base));" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 43 "The opposite question of how to represent \{" }{TEXT 305 9 "g1,...,gt" }{TEXT -1 6 "\} in <" }{TEXT 306 9 "f1,...,fs" }{TEXT -1 133 "> is trickier, since the division algorithm can't do the job i n this case. However, you can compute the matrix while computing the \+ \{" }{TEXT 307 8 "g1,..,gt" }{TEXT -1 321 "\}. Computing Groebner base s with matrices isn't a whole lot different than computing them withou t matrices (that is, from the user's standpoint). You still use the r ing() command to set the term-ordering. However, you just use one com mand, mxgb(), to compute a reduced Groebner basis and its matrix M. T he matrix M an " }{TEXT 277 1 "t" }{TEXT -1 3 " x " }{TEXT 276 1 "s" } {TEXT -1 17 " matix such that:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 1 "[" }{TEXT 278 2 "g1" }{TEXT -1 15 "] \+ [" }{TEXT 281 2 "f1" }{TEXT -1 1 "]" }}{PARA 0 "" 0 "" {TEXT -1 1 "[" }{TEXT 279 2 "g2" }{TEXT -1 15 "] [" }{TEXT 282 2 "f2" }{TEXT -1 1 "]" }}{PARA 0 "" 0 "" {TEXT -1 20 "[...] = M * [ ...]" }}{PARA 0 "" 0 "" {TEXT -1 24 "[...] [...]" }} {PARA 0 "" 0 "" {TEXT -1 1 "[" }{TEXT 280 2 "gt" }{TEXT -1 16 "] \+ [" }{TEXT 283 2 "fs" }{TEXT -1 1 "]" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 278 "mxgb() takes a list of polynom ials as its argument. If you do not desire to see the basis and matri x at each \"step\" (at the unminimized step, and the unreduced steps), a second argument of \"nosteps\" should be added. Let's use Problem \+ 2c of Chapter 2 Section 7 as an example. " }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 25 "ring(grevlex, [x, y, z]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "mxbase := mxgb([x - z^4, y - z^5]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 46 "Let's see if this matrix is what we say i t is." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "base := matrix(2,1 ,[x-z^4, y - z^5]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "simp lify(multiply(mxbase[2], base));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 112 "Since this m atrix gives the element of the Groebner basis, the matrix given by mxg b() is what we claimed it was." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 349 "As you may have noticed, there are quick basis_mxgb, min_mxgb, and red_mxgb commands which have counterparts th at do not have the \"mx\" prefix. All these commands are combined for the mxgb command, and are not meant for users. This is not to say th at you cannot use them, but these commands aren't terribly user friend ly and we discourage their use." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 143 "That's it for this tutorial. Remember, \+ more information on these commands can be found below in the reference guide. Thank you and good luck!" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 16 "Acknowledgements" }}{PARA 0 "" 0 "" {TEXT -1 117 "Will Gryc and David Cox would like to thank the Charleton Trust for supporting Will 's work on this Maple worksheet. " }}}}{MARK "2 4 0 0" 0 }{VIEWOPTS 1 1 0 3 2 1804 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }