# Implement some actions in Gap

I would like to calculate, in GAP, certain permutation actions on matrices. Namely:

1. Let $G=S_n$ be the symmetric group of degree $n$ and $\Omega=GL_n(q)$ (or a suitable subset). $G$ acts by conjugation (i.e. $(a,g)\mapsto a^g=g^{-1}ag$. [Compared to original question edited to use an action from the right.]
2. Let $G=S_n\times S_n$ and $\Omega$ as before. The action is given by $(a,(g,h))\mapsto h^{-1}ag$.
3. Let $G=(S_k\times S_{n-k})\times (S_k\times S_{n-k})$ and $\Omega$ the set of matrices with $0,1$-entries with an action as under 2.

• Welcome to MSE. This question would benefit from some editing - for some basic information about writing math at this site see e.g. here, here, here and here. – Alexander Konovalov Jul 30 '15 at 20:26
• In the 1st action, what is the domain of $g$ and of $a$? What is the multiplication in $gag^{-1}$? In the 3rd action, what's the dimension of matrices, and also how the action is defined? – Alexander Konovalov Jul 30 '15 at 20:29
• details about those actions can be found in: Permutation representations on invertible matrices, by :Yona Cherniavsky a, Eli Bagno,Linear Algebra and its Applications 419 (2006) 494–518. – Saad Jul 30 '15 at 22:24
• Thanks for the reference, but that may not work on this site. Even if the paper is in open access (you haven't provided a link, so I did not check) one can not expect that the reader of the question will be able to dedicate more of their time to look at more than 20 pages to search for details. I suggest to edit your question to provide more details, answer my questions above, fix mathematical notation using proper markup. Note that if you will be also pasting a GAP session to show your attempts made so far, indent the GAP input and output by four spaces to format it like a code. – Alexander Konovalov Jul 30 '15 at 23:01
• P.S. For the explanation how to define own actions in GAP, see also this answer and links posted there. – Alexander Konovalov Jul 30 '15 at 23:11

You can specify permutation actions by a function in GAP. Since multiplication of matrices with permutations is not defined, it will have to implement the appropriate permutations of rows or columns.

The action then is obtained by either ActionHomomorphism (the homomorphism) or Action (the permutation group image).

The domain can be specified as GAP object, or as list of elements; having nice properties (being sorted, allowing an Enumerator, ...) can substantially improve performance.

Thus for example the first action could be obtained as:

n:=3;
q:=4;
Omg:=GL(n,q); #Omega is reserved word
Sym:=SymmetricGroup(n);

myact1:=function(a,g)
local m;
m:=List(a,x->Permuted(x,g));
m:=Permuted(m,g^-1);
m:=ImmutableMatrix(DefaultFieldOfMatrix(a),m); # for efficiency make compact
return m;
end;
perm:=Action(G,Omg,myact1);


For the second action the extra work is in determining the two parts of a direct product element, which can be done by projections.

G:=DirectProduct(Sym,Sym);
p1:=Projection(G,1); # decompose an element in its parts
p2:=Projection(G,2);

myact2:=function(a,pair)
local m,g;
g:=Image(p1,pair);
m:=List(a,x->Permuted(x,g));
m:=Permuted(m,Image(p2,pair)^-1);
m:=ImmutableMatrix(DefaultFieldOfMatrix(a),m); # for efficiency compact
return m;
end;
perm:=Action(G,Omg,myact2);


In the third case one needs to construct the set of all 0/1 matrices first:

rows:=Tuples([0,1],n);
zerooone:=Tuples(rows,n);;


The direct product of symmetric groups is easiest obtained as set stabilizer:

k:=1;
stb:=Stabilizer(Sym,[1..k],OnSets);
G:=DirectProduct(stb,stb);
p1:=Projection(G,1);
p2:=Projection(G,2);


Then the same action function myact2 can be used.

• Many thanks, its really what I asked for, – Saad Jul 31 '15 at 11:17