next | previous | forward | backward | up | top | index | toc | Macaulay2 website
QuillenSuslin :: changeVar

changeVar -- computes a change of variables which make the first entry of a unimodular row monic in a specified variable

Synopsis

Description

The purpose of changeVar is to compute a unimodular matrix A and an invertible change of variables (given as a matrix B with the inverse change of variables given by C) so that after multiplying the given unimodular row U by A and applying the substitution B (with sub(U*A,B)), the first entry of the new row becomes monic in the last variable in the list L.

This method is primarily used before applying horrocks, since horrocks requires the first entry of the unimodular row to be monic in the given variable.

i1 : R = ZZ[x]

o1 = R

o1 : PolynomialRing
i2 : U = matrix{{12*x^2+20*x+7,4*x^2+12*x+5,12*x^2+44*x+35}}

o2 = | 12x2+20x+7 4x2+12x+5 12x2+44x+35 |

             1       3
o2 : Matrix R  <--- R
i3 : isUnimodular U

o3 = true
i4 : (A,B,C) = changeVar(U,{x})

o4 = (| 3024x18+63720x17-952320x16-15154128x15+107756844x14+479809876x13+3995
      | -504x13-15996x12-10056x11+2511768x10+9939946x9+16560274x8-699416978x7
      | -3024x18-57672x17+1064640x16+12968688x15-132601500x14-202184380x13-37
     ------------------------------------------------------------------------
     606820x12-39391285472x11-58650473936x10+102412518582x9+116188662804x8+
     -1487252938x6-4031638520x5-5360330891x4-1814067042x3                  
     30045168x12+46718607960x11-38451238904x10+23035969708x9-224995699378x8
     ------------------------------------------------------------------------
     1077893682748x7+684018133334x6-1471276697626x5
                                                   
     -573273666782x7+211144844680x6+603448147606x5+
     ------------------------------------------------------------------------
     -1009133585930x4-116618595557x3 1 0                          |, | x |, |
                                     0 1                          |
     240206603531x4+23582871546x3+1  0 6x5-76x4+180x3-26x2-94x-13 |
     ------------------------------------------------------------------------
     x |)

o4 : Sequence
i5 : U' = sub(U*A,B)

o5 = | x3+12x2+44x+35 12x2+20x+7
     ------------------------------------------------------------------------
     72x7-648x6-974x5+4948x4+4028x3-5198x2-3850x-450 |

             1       3
o5 : Matrix R  <--- R
i6 : isUnimodular U'

o6 = true

Notice that after multiplying U by the unimodular matrix A and applying the change of variables B (using the substitute command), the first entry in U' above is now monic in x.

The order of the variables given in the list matter, as changeVar will construct a change of variable so that the new unimodular row is monic in the last variable of the list.

In the next example, since we are using the command changeVar(U,{x,y}) the first entry in the row sub(U*A,B) will be monic in y.

i7 : R = ZZ/7[x,y]

o7 = R

o7 : PolynomialRing
i8 : U = matrix{{2*x^2*y+x*y+1,3*x^2*y^2+x*y,5*x^3*y^2+x*y}}

o8 = | 2x2y+xy+1 3x2y2+xy -2x3y2+xy |

             1       3
o8 : Matrix R  <--- R
i9 : isUnimodular U

o9 = true
i10 : (A,B,C) = changeVar(U,{x,y})

o10 = (| -3 0 0 |, | y x+y |, | -x+y x |)
       | 0  1 0 |
       | 0  0 1 |

o10 : Sequence
i11 : U' = sub(U*A,B)

o11 = | xy2+y3-3xy-3y2-3 3x2y2-xy3+3y4+xy+y2 -2x2y3+3xy4-2y5+xy+y2 |

              1       3
o11 : Matrix R  <--- R
i12 : isUnimodular U'

o12 = true

One can also check that the inverse change of variables, C, will give the matrix U*A, undoing the change of variables given by B.

i13 : U'' = sub(U',C)

o13 = | x2y-3xy-3 3x2y2+xy -2x3y2+xy |

              1       3
o13 : Matrix R  <--- R
i14 : U'' == U*A

o14 = true

See also

Ways to use changeVar :

For the programmer

The object changeVar is a method function with options.