Faithful permutation representation

255 Views Asked by At

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.

2

There are 2 best solutions below

1
On BEST ANSWER

Here is how to do it in Magma, using Alexander's example with an embedding into a direct product.

> G := Sym(4);
> H1 := Stabilizer(G,1); H2 := Socle(G);
> a1, P1 := CosetAction(G,H1);
> a2, P2 := CosetAction(G,H2);
> D, inj := DirectProduct(P1,P2);
> act := hom< G->D | x :-> inj[1](a1(x)) * inj[2](a2(x)) >;
> P := Image(act);
2
On

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) ]