Faithful permutation representation

gapgroup-theorymagmarepresentation-theory

excuse me if my question is trivial.
I’m trying to use magma to construct faithful permutation representations of a certain group using the group action that lets the group G acts by the left multiplication on some core free subgroups. I used the following code which successfully gives me the faithful permutation representation with regard to (one subgroup H).

f, L := CosetAction(G, H);
f;

My question: is there a code that construct me a faithful permutation representation of a group with regard to given two subgroups such that the core of the intersection of the two subgroups i give is trivial?

Your help with this is highly appreciated.
Thanks.

Best Answer

In GAP (which is also tagged) there are two possibilities. One could either act on cosets for both subgroups, or one could combine the two actions to a subdirect product.

As an example, lets take the actions of $S_4$ on the cosets of $S_3$ and of $V_4$:

gap> G:=SymmetricGroup(4);;
gap> H1:=SymmetricGroup(3);;H2:=Socle(G);;StructureDescription(H2);
"C2 x C2"

In the first example we simply concatenate the lists of costs as domain, and act on these by right multiplication (GAP always acts from the right and uses right cosets):

gap> cos:=Concatenation(RightCosets(G,H1),RightCosets(G,H2));
[ RightCoset(Sym( [ 1 .. 3 ] ),()), RightCoset(Sym( [ 1 .. 3 ] ),(1,4)),
  RightCoset(Sym( [ 1 .. 3 ] ),(1,4,2)), RightCoset(Sym( [ 1 .. 3 ] ),(1,4,
   3)), RightCoset(Group([ (1,4)(2,3), (1,2)(3,4) ]),()), RightCoset(Group(
   [ (1,4)(2,3), (1,2)(3,4) ]),(3,4)), RightCoset(Group(
   [ (1,4)(2,3), (1,2)(3,4) ]),(2,3)), RightCoset(Group(
   [ (1,4)(2,3), (1,2)(3,4) ]),(2,3,4)), RightCoset(Group(
   [ (1,4)(2,3), (1,2)(3,4) ]),(2,4,3)), RightCoset(Group(
   [ (1,4)(2,3), (1,2)(3,4) ]),(2,4)) ]
gap> act:=ActionHomomorphism(G,cos,OnRight,"surjective");
<action epimorphism>
gap> p:=Image(act);
Group([ (1,2,3,4)(5,10)(6,9)(7,8), (2,3)(5,6)(7,9)(8,10) ])
gap> Orbits(p,MovedPoints(p));
[ [ 1, 2, 3, 4 ], [ 5, 10, 6, 8, 9, 7 ] ]

In the sectond version, we constrcut the two permutation actions separately:

gap> p1:=Image(FactorCosetAction(G,H1));
Group([ (1,2,3,4), (2,3) ])
gap> p2:=Image(FactorCosetAction(G,H2));
Group([ (1,6)(2,5)(3,4), (1,2)(3,5)(4,6) ])

Now, we can combine the generator lists on disjoint domains:

gap> diag:=SubdirectDiagonalPerms(GeneratorsOfGroup(p1),GeneratorsOfGroup(p2));
[ (1,2,3,4)(5,10)(6,9)(7,8), (2,3)(5,6)(7,9)(8,10) ]
gap> p:=Group(diag);
Group([ (1,2,3,4)(5,10)(6,9)(7,8), (2,3)(5,6)(7,9)(8,10) ])

If you want to keep the connection better, you could instead use the formal embeddings into a direct product:

gap> d:=DirectProduct(p1,p2);
Group([ (1,2,3,4), (2,3), (5,10)(6,9)(7,8), (5,6)(7,9)(8,10) ])
gap> emb1:=Embedding(d,1);;emb2:=Embedding(d,2);;
gap> gens1:=GeneratorsOfGroup(p1);;gap> diag:=List([1..Length(gens1)],x->Image(emb1,gens1[x])
> *Image(emb2,gens2[x]));
[ (1,2,3,4)(5,10)(6,9)(7,8), (2,3)(5,6)(7,9)(8,10) ]
gap> gens2:=GeneratorsOfGroup(p2);;
gap> diag:=List([1..Length(gens1)],x->Image(emb1,gens1[x])
> *Image(emb2,gens2[x]));
[ (1,2,3,4)(5,10)(6,9)(7,8), (2,3)(5,6)(7,9)(8,10) ]
Related Question