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@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.lueb...@math.rwth-aachen.de > \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ > > _______________________________________________ > Forum mailing list > Forum@gap-system.org > https://mail.gap-system.org/mailman/listinfo/forum _______________________________________________ Forum mailing list Forum@gap-system.org https://mail.gap-system.org/mailman/listinfo/forum