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
sub 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
|