Goto Chapter: Top 1 2 Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

1 Introduction
 1.1 Overview
 1.2 Primitive Groups of type PA

1 Introduction

This chapter serves as an introduction and showcases some highlights of the package WPrecog.

1.1 Overview

The package WPrecog (Wreath Product Recognition) provides recognition methods for groups abstractly isomorphic to certain (subgroups of) wreath products.

Assume we are given as input a black box group \(G\) which is isomorphic to a (subgroup of) wreath product. In certain cases, we can compute a wreath product decomposition of the input group, that is an embedding from the group into a natural wreath product where elements are encoded component-wise. For example, \(G\) can be a matrix group of Aschbacher class C2 or a primitive group of type PA. The main command is provided via WreathProductDecomposition.

For instance, the computation of a wreath product decomposition of \(\textrm{PSL}(3,3) \wr E(4)\) represented as a primitive group of type PA acting on \(13^4 = 28\,561\) points takes less than half a second. This yields an effective mapping into an imprimitive wreath product acting on \(13 \cdot 4 = 52\) points.

1.2 Primitive Groups of type PA

We provide an example computation of a wreath product decomposition for a primitive permutation group \(G\) of type PA isomorphic to \(\textrm{PSL}(3,3) \wr E(4)\). As a User, we simply need to load the package and everything works out of the box. However, in order to create this example, we additionally load a utility file that helps us to create pseudo-random generators. We also disable the additional display of information provided by the recog package.

# Load package and utility file for constructing pseudo-random generators, etc.
gap> LoadPackage("WPrecog", false);;
gap> ReadPackage("WPrecog", "examples/Utils.gi");;
gap> SetInfoLevel(InfoRecog, 0);

Next, we construct the components of the wreath product. The base component \(K = \textrm{PSL}(3,3)\) acts on \(n = 13\) points and the top component \(E(4)\) acts on \(m = 4\) points.

# Construct components
gap> K := PrimitiveGroup(13, 7); # PSL(3,3)
L(3, 3)
gap> n := NrMovedPoints(K);
13
gap> Length(GeneratorsOfGroup(K));
2
gap> H := TransitiveGroup(4, 2);
E(4) = 2[x]2
gap> m := NrMovedPoints(H);
4
gap> Length(GeneratorsOfGroup(H));
2

Now, we construct the wreath product \(W = K \wr H\). The native GAP command WreathProductProductAction(K, H) creates a wreath product in product action acting on \(13^4 = 28\,561\) points. Since GAP knows that we created \(W\) as a wreath product, we can directly access the components of elements. Therefore, we later need to disguise the group on the computer so GAP does not have direct access to this information. Moreover, the constructed generators are highly structured. The first \(8\) generators are the generators of the base group, and the last \(2\) generators are the generators of the top group.

# Construct black box group G isomorphic to wreath product W
gap> W := WreathProductProductAction(K, H);
<permutation group of size 3978949139103744 with 10 generators>
gap> NrMovedPoints(W);
28561
gap> HasWreathProductInfo(W);
true

# generators of first base component
gap> ListWreathProductElement(W, W.1);
[ (1,10,4)(6,9,7)(8,12,13), (), (), (), () ]
gap> ListWreathProductElement(W, W.5);
[ (1,3,2)(4,9,5)(7,8,12)(10,13,11), (), (), (), () ]

# generators of second base component
gap> ListWreathProductElement(W, W.2);
[ (), (1,10,4)(6,9,7)(8,12,13), (), (), () ]
gap> ListWreathProductElement(W, W.6);
[ (), (1,3,2)(4,9,5)(7,8,12)(10,13,11), (), (), () ]

# generators of top component
gap> ListWreathProductElement(W, W.9);
[ (), (), (), (), (1,4)(2,3) ]
gap> ListWreathProductElement(W, W.10);
[ (), (), (), (), (1,2)(3,4) ]

Now, we construct the black box group \(G\) isomorphic to \(W = K \wr H\). For this we use utility functions provided by "examples/Utils.gi" in this package. In order to disguise the group on the computer, we use a utility command RandomGroup to generate pseudo-random generators. Afterwards, we use a pseudo-random permutation generated by the utility command QuickRandomPermutedList to conjugate these generators. Therefore, GAP has no longer access to the components of wreath product elements, even provided that we know the wreath product \(W\).

# Construct black box group G isomorphic to wreath product W
gap> G := RandomGroup(W)^PermList(QuickRandomPermutedList(n^m));
<permutation group with 15 generators>
gap> HasWreathProductInfo(G);
false
gap> ListWreathProductElement(W, G.1);
fail

Finally, we use the main command of this package, WreathProductDecomposition on the group \(G\). We tell the computer to assume that \(G\) is a primitive group of type PA. The return value is an embedding \(\varphi\) from \(G\) to a natural wreath product \(R = \textrm{Sym}(13) \wr \textrm{Sym}(4)\) acting imprimitively on \(13 \cdot 4 = 52\) points. The elements in \(R\) can be viewed component-wise.

# Wreath Product Decomposition
gap> phi := WreathProductDecomposition(G, rec(
>     action := "product action"
> ));;
gap> R := Range(phi);
<permutation group of size 36085481721713375974666734560870400000000 with 10 generators>
gap> NrMovedPoints(R);
52
gap> HasWreathProductInfo(R);
true
gap> ListWreathProductElement(R, ImageElm(phi, G.1));
[
(1,9,10,5,13,3,11,4,12,6,2,7,8),
(1,2)(3,11,6,9)(4,7,5,12)(8,13),
(1,8,9,6)(2,11)(3,5)(4,12,13,10),
(1,10)(2,8,11,12)(4,5)(6,7,13,9),
()
]
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 Ind

generated by GAPDoc2HTML