Dear GAP Forum,
Ken W. Smith asked
I've been using GAP to create incidence matrices of combinatorial
designs. (An incidence matrix M has entries which are 0 and 1 and so the
matrix may be viewed as existing over *any* field.) I would now like to
examine the codes generated by these matrices, that is, I would like to
examine the row space of the matrix M over a field of prime order. I'd
like to find bases for the row space.
How do I do this? A first step, I assume, is to row reduce the
matrix M mod p, but I can't seem to find the right commands.
In his answer, Chris Charnes' mentioned the Guava package,
which is probably exactly what Ken Smith needs.
In addition to this, here are some general remarks.
In GAP, the reduction of integer matrices modulo a prime
can be performed by multiplying the matrix with the identity
of the prime field in question.
gap> mat:= [ [ 1, 2, 3 ], [ 4, 5, 6 ] ];; gap> p:= 3;; gap> red:= mat * One( GF(p) ); [ [ Z(3)^0, Z(3), 0*Z(3) ], [ Z(3)^0, Z(3), 0*Z(3) ] ]
The vector space spanned by the rows can then be formed
using the function `VectorSpace'.
gap> v:= VectorSpace( GF(p), red ); <vector space over GF(3), with 2 generators> gap> Dimension( v ); 1 gap> AsList( v ); [ [ 0*Z(3), 0*Z(3), 0*Z(3) ], [ Z(3)^0, Z(3), 0*Z(3) ], [ Z(3), Z(3)^0, 0*Z(3) ] ]
I hope this helps.