[GAP Forum] matrix realization over prime field

Thomas Breuer sam at Math.RWTH-Aachen.De
Thu Oct 24 14:12:17 BST 2019


Dear GAP Forum,

in addition to Frank's reply to Evgeny's question:

The GAP function 'BlownUpMat' is intended for this purpose,
see the GAP Reference Manual for details.

Here is an example.

    gap> A:= [ [ Z(2^2), 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ];;
    gap> Display( BlownUpMat( Basis( GF(4) ), A );
     . 1 . .
     1 1 . .
     . . 1 .
     . . . 1

Note that the first argument must be a basis
of the field extension F/K in question;
the submatrices in the result are the matrices
of the K-linear mappings on F that are defined
by the multiplication with elements of F.

All the best,
Thomas


On Thu, Oct 24, 2019 at 03:55:50AM +0200, Frank Lübeck wrote:
> Dear Evgeny, dear Forum,
> 
> I have written such a function for a demo. It is maybe not very elegant or
> optimized but seems to work:
> 
> # write elements of GF(q^d) as dxd-matrices over GF(q)
> MatricesFieldElts := function(q, d)
>   local f, bas, basv, z, zmat, res, i;
>   f := GF(GF(q), d);
>   bas := Basis(f);
>   basv := BasisVectors(bas);
>   z := Z(q^d);
>   zmat := List(basv*z, x-> Coefficients(bas, x));
>   for i in zmat do
>     ConvertToVectorRep(i, q);
>   od;
>   MakeImmutable(zmat);
>   ConvertToMatrixRep(zmat, q);
>   res := [zmat^0];
>   for i in [1..q^d-2] do
>     res[i+1] := res[i] * zmat;
>   od;
>   res[q^d] := NullMat(d, d, GF(q));
>   return res;
> end;
> 
> # blow up GF(q^d)-matrix over subfield of size q and degree d
> BlowUpMatrixOverSmallField := function(mat, q, d)
>   local flist, z, f, tmp; 
>   flist := MatricesFieldElts(q, d);
>   z := Z(q^d);
>   f := function(c)
>     if IsZero(c) then
>       return flist[q^d];
>     fi;
>     return flist[LogFFE(c, z)+1];
>   end;
>   tmp := List(mat, r-> List(r, f));
>   tmp := Concatenation(List(tmp, r-> List([1..d], i-> Concatenation(
>               List(r, m-> m[i]))))); 
>   ConvertToMatrixRep(tmp, q);
>   return tmp;
> end;
> 
> gap> A := [ [ Z(2^2), 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ];;
> gap> AA := BlowUpMatrixOverSmallField(A, 2, 2);
> <a 4x4 matrix over GF2>
> gap> Display(AA);
>  . 1 . .
>  1 1 . .
>  . . 1 .
>  . . . 1
> 
> 
> Best regards,
>    Frank
> 
> 
> On Thu, Oct 24, 2019 at 08:20:31AM +0700, Evgeny Vdovin wrote:
> > Dear all,
> > 
> > Could you give me an idea, how could I realize the following procedure:
> > 
> > Let A be a n*n matrix over a non-prime field GF(p^k) (say, A in GL(2,4)). I
> > need to generate matrix B of size nk*nk over GF(p) such that each k*k block
> > in it is an element in GF(p^k) realized as k*k matrices over GF(p) and the
> > element corresponds to an element of A.
> > 
> > For example, if
> > A =
> > [
> >    [Z(2^2),0*Z(2^2)],
> >    [0*Z(2^2),Z(2^2)^(-0)]
> > ]
> > and
> > Z(2^2) =
> > [
> >   [a,b],
> >   [c,d]
> > ];
> > Z(2^2)^(-1)=
> > [
> >   [x,y],
> >   [z,t]
> > ],
> > then
> > B=
> > [
> >   [a,b,0*Z(2),0*Z(2)],
> >   [c,d,0*Z(2),0*Z(2)],
> >   [0*Z(2),0*Z(2),x,y],
> >   [0*Z(2),0*Z(2),z,t]
> > ].
> > 
> > All the best, Evgeny.
> > 
> > -- 
> > Evgeny Vdovin
> > Sobolev Institute of Mathematics
> > pr-t Acad. Koptyug, 4
> > 630090, Novosibirsk, Russia
> > Office    +7 383 3297663
> > Fax       +7 383 3332598
> > _______________________________________________
> > Forum mailing list
> > Forum at gap-system.org
> > https://mail.gap-system.org/mailman/listinfo/forum
> 
> -- 
> ///  Dr. Frank Lübeck, Lehrstuhl D für Mathematik, Pontdriesch 14/16,
> \\\                    52062 Aachen, Germany
> ///  E-mail: Frank.Luebeck at Math.RWTH-Aachen.De
> \\\  WWW:    http://www.math.rwth-aachen.de/~Frank.Luebeck/
> 
> _______________________________________________
> Forum mailing list
> Forum at gap-system.org
> https://mail.gap-system.org/mailman/listinfo/forum



More information about the Forum mailing list