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.