SemiEchelonBasis( V )
SemiEchelonBasis( V, vectors )
returns a semi-echelonized basis of the row space V. A basis is called semi-echelonized if the first non-zero element in every row is one, and all entries exactly below these elements are zero.
If a second argument vectors is given, these vectors are taken as basis vectors. Note that if the rows of vectors do not form a semi-echelonized basis then an error is signalled.
gap> v:= GF(2)^2; v.name:= "v";; RowSpace( GF(2), [ [ Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ] ) gap> SemiEchelonBasis( v ); SemiEchelonBasis( v, [ [ Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ] ) gap> b:= Basis( v, [ [ 1, 1 ], [ 0, 1 ] ] * Z(2) ); Basis( v, [ [ Z(2)^0, Z(2)^0 ], [ 0*Z(2), Z(2)^0 ] ] ) gap> IsSemiEchelonBasis( b ); true gap> b; SemiEchelonBasis( v, [ [ Z(2)^0, Z(2)^0 ], [ 0*Z(2), Z(2)^0 ] ] ) gap> Coefficients( b, [ 0, 1 ] * Z(2) ); [ 0*Z(2), Z(2)^0 ] gap> Coefficients( b, [ 1, 0 ] * Z(2) ); [ Z(2)^0, Z(2)^0 ]
GAP 3.4.4