a prime integer, this method uses algorithms of Logar-Sturmfels and Fabianska-Quadrat to compute an isomorphism from a free module
. The following gives examples of constructing such isomorphisms in the cases where the module is a cokernel, kernel, image, or coimage of a unimodular matrix.
i1 : R = ZZ/101[x,y,z]
o1 = R
o1 : PolynomialRing
|
i2 : f = 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 f
o3 = true
|
i4 : P1 = coker transpose f -- Construct the cokernel of the transpose of f.
o4 = cokernel {-3} | x2y+1 |
{-1} | x+y-2 |
{-2} | 2xy |
3
o4 : R-module, quotient of R
|
i5 : isProjective P1
o5 = true
|
i6 : rank P1
o6 = 2
|
i7 : phi1 = qsIsomorphism P1
o7 = {-3} | 50x 0 |
{-1} | 0 1 |
{-2} | -1 0 |
2
o7 : Matrix P1 <-- R
|
i8 : isIsomorphism phi1
o8 = true
|
i9 : image phi1 == P1
o9 = true
|
i10 : P2 = ker f -- Construct the kernel of f.
o10 = image {3} | 0 x+y-2 y2-2y |
{1} | xy -x2y-xy2+2xy-1 -xy3+2xy2-y |
{2} | 50x+50y+1 -50xy-50y2-x-2y+2 -50y3-2y2+2y-50 |
3
o10 : R-module, submodule of R
|
i11 : isProjective P2
o11 = true
|
i12 : rank P2
o12 = 2
|
i13 : phi2 = qsIsomorphism P2
o13 = {3} | 0 0 |
{4} | 1 0 |
{5} | 0 1 |
2
o13 : Matrix P2 <-- R
|
i14 : isIsomorphism phi2
o14 = true
|
i15 : image phi2 == P2
o15 = true
|
i16 : P3 = image f -- Construct the image of f.
o16 = image | x2y+1 x+y-2 2xy |
1
o16 : R-module, submodule of R
|
i17 : isProjective P3
o17 = true
|
i18 : rank P3
o18 = 1
|
i19 : phi3 = qsIsomorphism P3
o19 = {3} | -1 |
{1} | 0 |
{2} | -50x |
1
o19 : Matrix P3 <-- R
|
i20 : isIsomorphism phi3
o20 = true
|
i21 : image phi3 == P3
o21 = true
|
i22 : P4 = coimage f -- Construct the coimage of f.
o22 = cokernel {3} | 0 x+y-2 y2-2y |
{1} | xy -x2y-xy2+2xy-1 -xy3+2xy2-y |
{2} | 50x+50y+1 -50xy-50y2-x-2y+2 -50y3-2y2+2y-50 |
3
o22 : R-module, quotient of R
|
i23 : isProjective P4
o23 = true
|
i24 : rank P4
o24 = 1
|
i25 : phi4 = qsIsomorphism P4
o25 = {3} | -1 |
{1} | 0 |
{2} | -50x |
1
o25 : Matrix P4 <-- R
|
i26 : isIsomorphism phi4
o26 = true
|
i27 : image phi4 == P4
o27 = true
|