### compose_group(string);

Builds a permutation group. There are a lot of ways to construct groups in DISCRETA. All of them are available through this function. string is a space separated string containing commands for constructing groups. The commands are as follows:

### Linear Groups:

• PSL n q = projective special linear group of dimension n over the galois-field GF(q)
• PGL n q = projective linear group of dimension n over the galois-field GF(q)
• PSSL n q = projective special semi-linear group of dimension n over the galois-field GF(q)
• PGGL n q = projective semi-linear group of dimension n over the galois-field GF(q)

### Well Known Groups:

• S n = symmetric group on n points
• A n = alternating group on n points
• D n = dihedral group on n points
• C n = cyclic group on n points
• HolC n = holomorph of cyclic group on n points
• Id n = trivial group on n points
• HolCsubgroup n i = subgroup of holomorph of cyclic group on n points (of index i)
• SnwrSm n m = wreath product of S_n with S_m

• M11 = Mathieu group M11
• M12 = Mathieu group M12
• M23 = Mathieu group M23
• M24 = Mathieu group M24
• HS176 = Higman Sims group on 176 points

### Other Constructions:

• file file_name = read generators form file

### Unary Operations:

• [2] = induction on 2-subsets (degree ${n \choose 2}$)
• (2) = induction on 2-tuples (degree $n^2$)
• [2]i = induction on injective 2-tuples = ordered pairs (degree $n(n-1)$)
• [3] = induction on 3-subsets (degree ${n \choose 3}$)
• + = add a fixedpoint (in front)
• - = stabilize first point (and remove the stabilized point)

### Binary Operations:

• , = concatenate two generating systems
• x = form the dirct sum of two permutation groups on disjoint sets
• X = form the dirct product of two permutation groups on tuples $(a,b)$
• wr = form the wreath product of two permutation groups
• exp = form the exponential group of two permutation groups
• ON_MAPPINGS = act on mappings

Return Values:
This function returns a vector containing two strings. The first string is a label for the group in ASCII, the second is the corresponding label in tex.

Example 1:

gap> label := compose_group("PGGL 2 32");
discreta_batch compose_group discreta_batch_output.g discreta_tmp PGGL 2 32
[ "PGGL_2_32", "{\rm P}Gamma {\rm L}_{2}(32)" ]
gap> g_label := label[1];
"PGGL_2_32"
gap> g_label_tex := label[2];
"{\rm P}Gamma {\rm L}_{2}(32)"
gap>


Example 2:

gap> label := compose_group("PSL 2 17 C 2 X");
discreta_batch compose_group discreta_batch_output.g discreta_tmp PSL 2 17 C 2\
X
[ "PSL_2_17C2X", "{\rm PSL}_{2}(17){\bf C}_{2}\times" ]
gap>

This composes a group on 36 points of order 4896, isomorphic to PSL(2,17) acting diagonally on 2 x 18 points.

Example 3:

gap> label := compose_group("M12 -");
discreta_batch compose_group discreta_batch_output.g discreta_tmp M12 -
[ "M12-", "{\bf M}_{12}-" ]
gap>

Composes the point stabilizer of M12, that is, M11 of order 7920 on 10 points.

Example 4:

gap> label := compose_group("file s5.txt");
discreta_batch compose_group discreta_batch_output.g discreta_tmp file s5.txt
[ "file_s5.txt", "{\rm file s5.txt}" ]
gap>

Reads the generators from a given file, here s5.txt. The format of this file is easy. The first integer is the number of generators r, the second integer is the degree d and the following r * d integers contain the images of 1..d under the r generators (as numbers from 1 to d). Here an example, defining S_5:
2 5
2 1 3 4 5
2 3 4 5 1

This file is format free, that is whitespace characters may occur in arbitrary manner.

### GeneratorsPermGroup( grp, fname, deg);

Writes generators for the GAP permutation group grp in DISCRETA format into the file fname. deg must be the degree of the group.

### get_generators(km);

Retrieves the generators for the group from the KM-file.

Example:

gap> g := get_generators(km);
discreta_batch get_generators KM_PGGL_2_32_t5_k6.txt discreta_batch_output.g d\
iscreta_tmp
[ ( 3, 4, 6,10,18, 7,12,22,15,28,19, 9,16,30,31,33,29,21, 5, 8,14,26,23,17,32,
27,25,13,24,11,20), ( 3,20,11,24,13,25,27,32,17,23,26,14, 8, 5,21,29,33,
31,30,16, 9,19,28,15,22,12, 7,18,10, 6, 4),
( 2, 3)( 4, 5)( 6, 7)( 8, 9)(10,11)(12,13)(14,15)(16,17)(18,19)(20,21)
(22,23)(24,25)(26,27)(28,29)(30,31)(32,33),
( 1, 3)( 4,31)( 5,21)( 6,24)( 7,10)( 8,15)( 9,17)(11,25)(12,19)(13,26)
(14,16)(18,27)(20,30)(22,29)(23,33)(28,32),
( 4, 6,18,15,29)( 5, 7,19,14,28)( 8,22,31,24,27)( 9,23,30,25,26)
(10,12,16,32,21)(11,13,17,33,20) ]
gap> gg := Group(g, g[1]^0);
Group( ( 3, 4, 6,10,18, 7,12,22,15,28,19, 9,16,30,31,33,29,21, 5, 8,14,26,23,
17,32,27,25,13,24,11,20), ( 3,20,11,24,13,25,27,32,17,23,26,14, 8, 5,21,29,
33,31,30,16, 9,19,28,15,22,12, 7,18,10, 6, 4), ( 2, 3)( 4, 5)( 6, 7)( 8, 9)
(10,11)(12,13)(14,15)(16,17)(18,19)(20,21)(22,23)(24,25)(26,27)(28,29)(30,31)
(32,33), ( 1, 3)( 4,31)( 5,21)( 6,24)( 7,10)( 8,15)( 9,17)(11,25)(12,19)
(13,26)(14,16)(18,27)(20,30)(22,29)(23,33)(28,32), ( 4, 6,18,15,29)
( 5, 7,19,14,28)( 8,22,31,24,27)( 9,23,30,25,26)(10,12,16,32,21)
(11,13,17,33,20) )
gap> Size(gg);
163680
gap>


Back to the DISCRETA-GAP interface
Back to the typical GAP-session
Last updated: July 26, 1999, Evi Haberberger