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:
Omg:=GL(n,q); #Omega is reserved word
m:=ImmutableMatrix(DefaultFieldOfMatrix(a),m); # for efficiency make compact
For the second action the extra work is in determining the two parts of a direct product element, which can be done by projections.
p1:=Projection(G,1); # decompose an element in its parts
m:=ImmutableMatrix(DefaultFieldOfMatrix(a),m); # for efficiency compact
In the third case one needs to construct the set of all 0/1 matrices first:
The direct product of symmetric groups is easiest obtained as set stabilizer:
Then the same action function
myact2 can be used.