Description
Given a unimodular row
f over a polynomial ring R[x_1,\ldots,x_n] (where R is either
QQ,
ZZ, or
ZZ/p) one can compute a collection of matrices \{U_i\}^r_{i=1} and maximal ideals m_1,\ldots,m_r so that:
1. Each U_i is unimodular over (R[x_1,\ldots,x_{n-1}]_{m_i})[x_n] ,
2. Each U_i solves the unimodular row problem for
f in (R[x_1,\ldots,x_{n-1}]_{m_i})[x_n], and
3. Letting d_i denote the common denominator of the entries of U_i in R[x_1,\ldots,x_{n-1}] , we have (d_1,\ldots,d_r) = R[x_1,\ldots,x_{n-1}].
One can accomplish this, for example, by repeatedly using
getMaxIdeal and
horrocks as in the following example.
i1 : R = ZZ[x,y]
o1 = R
o1 : PolynomialRing
|
i2 : f = matrix{{y^3+2*x*y^2,3*y+1,x^3}}
o2 = | 2xy2+y3 3y+1 x3 |
1 3
o2 : Matrix R <-- R
|
i3 : isUnimodular f
o3 = true
|
i4 : m1 = getMaxIdeal(ideal(0_R),{x})
o4 = ideal (2, x)
o4 : Ideal of R
|
i5 : L1 = horrocks(f,y,m1)
o5 = | 27/(6x-1) (-27y-9)/(6x-1)
| (-18xy-9y2+6x+3y-1)/(6x-1) (18xy2+9y3)/(6x-1)
| 0 0
------------------------------------------------------------------------
(-27x3)/(6x-1) |
(18x4y+9x3y2-6x4-3x3y+x3)/(6x-1) |
1 |
3 3
o5 : Matrix (frac R) <-- (frac R)
|
i6 : m2 = getMaxIdeal(sub(ideal(6*x-1),R),{x})
o6 = ideal (x - 1, 5)
o6 : Ideal of R
|
i7 : L2 = horrocks(f,y,m2)
o7 = | 0 0 1 |
| 0 1 0 |
| 1/x3 (-3y-1)/x3 (-2xy2-y3)/x3 |
3 3
o7 : Matrix (frac R) <-- (frac R)
|
i8 : sub(ideal(6*x-1,x^3),R) == ideal(1_R)
o8 = true
|
i9 : L = {L1,L2}
o9 = {| 27/(6x-1) (-27y-9)/(6x-1)
| (-18xy-9y2+6x+3y-1)/(6x-1) (18xy2+9y3)/(6x-1)
| 0 0
------------------------------------------------------------------------
(-27x3)/(6x-1) |, | 0 0 1 |}
(18x4y+9x3y2-6x4-3x3y+x3)/(6x-1) | | 0 1 0 |
1 | | 1/x3 (-3y-1)/x3 (-2xy2-y3)/x3 |
o9 : List
|
Once we have constructed a list
L of local solutions of the unimodular row problem for
f, we can use patch to create a matrix
U so that the product
fU is the same as
f evaluated at
y=0.
i10 : U = patch(L,y)
o10 = | 45349632x8y3+7558272x7y3+1259712x6y3+419904x6y2-1944x3y2-648x3y
| -30233088x9y4-15116544x8y5+10077696x9y3-2519424x7y5-419904x6y5-
| -10077696x6y3-93312x4y2
-----------------------------------------------------------------------
+3y+1
279936x7y3+93312x7y2+1296x4y3+648x3y4-2xy2-y3
-----------------------------------------------------------------------
2916x2y+486xy+81y 0 |
-1944x3y2-972x2y3+648x3y-162xy3-27y3+9y2-3y+1 0 |
-648y 1 |
3 3
o10 : Matrix R <-- R
|
i11 : isUnimodular U
o11 = true
|
i12 : f*U
o12 = | 0 1 x3 |
1 3
o12 : Matrix R <-- R
|
i13 : sub(f,{y => 0})
o13 = | 0 1 x3 |
1 3
o13 : Matrix R <-- R
|