Description
Given a unimodular m \times \ n matrix over a polynomial ring with coefficients in
QQ,
ZZ, or
ZZ/p with
p a prime integer, this method uses the algorithm of LogarSturmfels to compute a solution of the unimodular matrix problem for
U. In other words, this method computes a square unimodular matrix
M such that if m \leq \ n then
U*M is of the form [I \ 0] where I is an m \times \ m identity matrix, and if m \geq \ n then
M is of the form [I \ 0]^T, where I is an n \times \ n identity matrix.
i1 : R = ZZ/101[x,y]
o1 = R
o1 : PolynomialRing

i2 : U = matrix{{x^2*y+1,x+y2,2*x*y}}
o2 =  x2y+1 x+y2 2xy 
1 3
o2 : Matrix R < R

i3 : isUnimodular U
o3 = true

i4 : M = qsAlgorithm U
o4 =  1 2xy xy+2 
 0 0 1 
 50x x2y1 50x250xyx 
3 3
o4 : Matrix R < R

i5 : isUnimodular M
o5 = true

i6 : U*M
o6 =  1 0 0 
1 3
o6 : Matrix R < R

The inverse of the matrix obtained by qsAlgorithm gives a completion of the original unimodular matrix
U to a square invertible matrix over the polynomial ring. This completion can also be obtained directly by using the method
completeMatrix.
i7 : I = inverse M
o7 = {0}  x2y+1 x+y2 2xy 
{0}  50x 0 1 
{1}  0 1 0 
3 3
o7 : Matrix R < R

i8 : det I
o8 = 1
o8 : R

The method can also be used over a Laurent polynomial ring with coefficients in
QQ or
ZZ/p for
p a prime integer. The following example demonstrates how to construct a Laurent polynomial ring and also how to use the method on a unimodular matrix over the ring.
i9 : R = QQ[x,Inverses => true,MonomialOrder => Lex]
o9 = R
o9 : PolynomialRing

i10 : U = matrix{{3*x^122*x+2*x^2, 3*x^12*x,2*x},{6*x^1+2523*x16*x^2+20*x^3, 6*x^1+294*x20*x^2,2+4*x+20*x^2}}
o10 =  2x22x2+3x1 2x+3x1 2x 
 20x316x223x+25+6x1 20x24x+29+6x1 20x2+4x+2 
2 3
o10 : Matrix R < R

i11 : M = qsAlgorithm U
o11 =  2/3x+31+8x1 3x1 360x+1080x1 
 2/3x2+65/3x77/38x1 2+3x1 360x2+360x+7201080x1 
 10x7/3 1 180 
3 3
o11 : Matrix R < R

i12 : det M
o12 = 180
o12 : R

i13 : U*M
o13 =  1 0 0 
 0 1 0 
2 3
o13 : Matrix R < R
