Macaulay2 » Documentation
Packages » QuillenSuslin :: patch
next | previous | forward | backward | up | index | toc

patch -- patch together local solutions to eliminate a variable

Synopsis

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

See also

Ways to use patch :

For the programmer

The object patch is a method function with options.