This function does certain column reductions in a matrix M, if M is of a certain type as in this example.
i1 : S=ZZ[x,y]; |
i2 : R=S[a_1..a_4]; |
i3 : M=matrix{{1,a_2,a_3,a_4}};
1 4
o3 : Matrix R <--- R
|
i4 : K=nextDegree(ker M,1,S)
o4 = {-1, 0} | a_2 0 a_3 0 a_4 0 |
{-1, 0} | -1 a_2 0 a_3 0 a_4 |
{0, 0} | 0 -1 0 0 0 0 |
{0, 0} | 0 0 -1 0 0 0 |
{0, 0} | 0 0 0 -1 -1 0 |
{0, 0} | 0 0 0 0 0 -1 |
6 6
o4 : Matrix R <--- R
|
What it does is that it starts from the bottom right and if it finds a -1 then it uses that column to reduces all other columns to a form with a zero in the corresponding row. It then continues up left searching for the next -1 and repeats the procedure.
i5 : gaussCol(K)
o5 = | a_2 a_2^2 a_3 a_2a_3 -a_2a_3+a_4 a_2a_4 |
| -1 0 0 0 0 0 |
| 0 -1 0 0 0 0 |
| 0 0 -1 0 0 0 |
| 0 0 0 -1 0 0 |
| 0 0 0 0 0 -1 |
6 6
o5 : Matrix R <--- R
|
The object gaussCol is a method function.