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

computeFreeBasis -- computes a free basis of a projective module

Synopsis

Description

Using the fact that every finitely generated projective module over a polynomial ring R is isomorphic to the kernel of some surjection between free modules, we define a surjective R-linear map from R^3 \to \ R to get a projective module.

i1 : R = QQ[x,y]

o1 = R

o1 : PolynomialRing
i2 : M = matrix{{x^2*y+1,x+y-2,2*x*y}}

o2 = | x2y+1 x+y-2 2xy |

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

o3 = true

Let P be the stably-free (and hence projective) kernel with rank 2. Notice that the first generator is a linear combination of the other two.

i4 : P = ker M

o4 = image {3} | 0      2x+2y-4          2y2-4y        |
           {1} | 2xy    -2x2y-2xy2+4xy-2 -2xy3+4xy2-2y |
           {2} | -x-y+2 xy+y2-2x-4y+4    y3-4y2+4y+1   |

                             3
o4 : R-module, submodule of R
i5 : isProjective P

o5 = true
i6 : rank P

o6 = 2
i7 : mingens P

o7 = {3} | 0      -2x-2y+4 -2y2+4y   |
     {1} | 2xy    2        2y        |
     {2} | -x-y+2 x2+xy-2x xy2-2xy-1 |

             3       3
o7 : Matrix R  <--- R
i8 : syz mingens P

o8 = {3} | -1     |
     {4} | -y2+2y |
     {5} | x+y-2  |

             3       1
o8 : Matrix R  <--- R

Notice that the native command mingens does not return a free generating set. We can use computeFreeBasis to construct a free generating set for P.

i9 : B = computeFreeBasis(P)

o9 = {3} | -2x-2y+4        -2y2+4y      |
     {1} | 2x2y+2xy2-4xy+2 2xy3-4xy2+2y |
     {2} | -xy-y2+2x+4y-4  -y3+4y2-4y-1 |

             3       2
o9 : Matrix R  <--- R
i10 : image B == P

o10 = true
i11 : syz B

o11 = 0

              2
o11 : Matrix R  <--- 0

Ways to use computeFreeBasis :

For the programmer

The object computeFreeBasis is a method function with options.