Different labeling of permutation representation in GAP

230 Views Asked by At

I have a permutation $x=(3,4)(5,7)(6,8)(9,12)(10,13)(11,14)$ that acts on the set of [1,2,3...14] points and have another permutation $x'=(1,4)(5,6)(7,8)...(24,27)$ that acts on the set of 27 points. I want to multiply both permutations $x$ and $x'$ but use different labelling, otherwise the same labelled permutations will be multiplied what will not give me the required solution.

My question is how can I change the labelling of permutations in GAP, i.e if $x$ is a permutation of degree $m$ and $x'$ is permutation of degree $n$ then $x*x'$ will give me permutation of degree $m+n$.

How can I do this in GAP?

1

There are 1 best solutions below

2
On BEST ANSWER

You can't change that to replace the built-in multiplication. But you may look at GAP functions ListPerm, PermList and other function documented in the same manual section. Using them, you can convert permutations to lists, then modify them following any logic that you may wish to implement, and then create a new permutation from that. For example,

gap> a:=(3,4)(5,7)(6,8)(9,12)(10,13)(11,14);
(3,4)(5,7)(6,8)(9,12)(10,13)(11,14)
gap> b:=(1,3)(5,4)(7,8)(24,27);
(1,3)(4,5)(7,8)(24,27)
gap> l:=ListPerm(b);
[ 3, 2, 1, 5, 4, 6, 8, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
  22, 23, 27, 25, 26, 24 ]
gap> n:=LargestMovedPoint(a);
14
gap> m:=l+n;
[ 17, 16, 15, 19, 18, 20, 22, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 
  33, 34, 35, 36, 37, 41, 39, 40, 38 ]
gap> c:=PermList(Concatenation([1..n],m));
(15,17)(18,19)(21,22)(38,41)
gap> a*c;
(3,4)(5,7)(6,8)(9,12)(10,13)(11,14)(15,17)(18,19)(21,22)(38,41)

If by any chance you are thinking about direct products of permutation groups, there should another way of doing this. Observe the following behaviour:

gap> G:=Group((1,2));
Group([ (1,2) ])
gap> H:=Group((1,2));
Group([ (1,2) ])
gap> DirectProduct(G,H);
Group([ (1,2), (3,4) ])

Acting points of the 2nd group were "shifted" automatically. Thus, for the same permutations as above, you may have:

gap> a:=(3,4)(5,7)(6,8)(9,12)(10,13)(11,14);
(3,4)(5,7)(6,8)(9,12)(10,13)(11,14)
gap> b:=(1,3)(5,4)(7,8)(24,27);
(1,3)(4,5)(7,8)(24,27)
gap> G:=Group(a);
Group([ (3,4)(5,7)(6,8)(9,12)(10,13)(11,14) ])
gap> H:=Group(b);
Group([ (1,3)(4,5)(7,8)(24,27) ])
gap> D:=DirectProduct(G,H);
Group([ (1,2)(3,5)(4,6)(7,10)(8,11)(9,12), (13,14)(15,16)(17,18)(19,20) ])
gap> f1:=Embedding(D,1);
1st embedding into Group([ (1,2)(3,5)(4,6)(7,10)(8,11)(9,12), (13,14)(15,16)
(17,18)(19,20) ])
gap> f2:=Embedding(D,2);
2nd embedding into Group([ (1,2)(3,5)(4,6)(7,10)(8,11)(9,12), (13,14)(15,16)
(17,18)(19,20) ])
gap> c:=a^f1*b^f2;
(1,2)(3,5)(4,6)(7,10)(8,11)(9,12)(13,14)(15,16)(17,18)(19,20)

Note that the answer is different from my example above since GAP picked up more efficient permutation representation for the direct product of the two groups, acting just on 20 points. If you will construct a direct product of $S_{14}$ and $S_{27}$, then it will act on 4 points and the resulting permutation will be exactly the same as in the first example:

gap> S14:=SymmetricGroup(14);
Sym( [ 1 .. 14 ] )
gap> S27:=SymmetricGroup(27);
Sym( [ 1 .. 27 ] )
gap> D:=DirectProduct(S14,S27);
<permutation group of size 949273031787355066495581919641600000000 with 4 gen\
erators>
gap> f1:=Embedding(D,1);
1st embedding into <permutation group of size 9492730317873550664955819196416\
00000000 with 4 generators>
gap> f2:=Embedding(D,2);
2nd embedding into <permutation group of size 9492730317873550664955819196416\
00000000 with 4 generators>
gap> c:=a^f1*b^f2;
(3,4)(5,7)(6,8)(9,12)(10,13)(11,14)(15,17)(18,19)(21,22)(38,41)

I guess in your case G and H will be some larger groups where you take a and b from, not cyclic with a and b as generators, but they need not to be full symmetric groups. Also, may be worth to experiment which approach will demonstrate better performance.

Hope this helps!