If a module is a submodule or quotient of a free module F, or is a subquotient of F (that is, a submodule of a quotient of F), then this routine yields the free module F.
i1 : R = QQ[x_1 .. x_5]
o1 = R
o1 : PolynomialRing
|
i2 : N = image matrix{{x_1,x_2},{x_2,x_3}}
o2 = image | x_1 x_2 |
| x_2 x_3 |
2
o2 : R-module, submodule of R
|
i3 : ambient N
2
o3 = R
o3 : R-module, free
|
i4 : ambient cokernel vars R
1
o4 = R
o4 : R-module, free
|
i5 : ambient kernel vars R
5
o5 = R
o5 : R-module, free, degrees {5:1}
|
i6 : M = image vars R ++ cokernel vars R
o6 = subquotient (| x_1 x_2 x_3 x_4 x_5 0 |, | 0 0 0 0 0 |)
| 0 0 0 0 0 1 | | x_1 x_2 x_3 x_4 x_5 |
2
o6 : R-module, subquotient of R
|
i7 : ambient M
2
o7 = R
o7 : R-module, free
|
This module is always the common target free module of the generator and relation matrices of M