# 37.1 The Basic Groups Library

`CyclicGroup( n )` `CyclicGroup( D, n )`

In the first form `CyclicGroup` returns the cyclic group of size n as a permutation group. In the second form D must be a domain of group elements, e.g., `Permutations` or `AgWords`, and `CyclicGroup` returns the cyclic group of size n as a group of elements of that type.

```    gap> c12 := CyclicGroup( 12 );
Group( ( 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12) )
gap> c105 := CyclicGroup( AgWords, 5*3*7 );
Group( c105_1, c105_2, c105_3 )
gap> Order(c105,c105.1); Order(c105,c105.2); Order(c105,c105.3);
105
35
7 ```

`AbelianGroup( sizes )` `AbelianGroup( D, sizes )`

In the first form `AbelianGroup` returns the abelian group C_{sizes[1]} * C_{sizes[2]} * ... * C_{sizes[n]}, where sizes must be a list of positive integers, as a permutation group. In the second form D must be a domain of group elements, e.g., `Permutations` or `AgWords`, and `AbelianGroup` returns the abelian group as a group of elements of this type.

```    gap> g := AbelianGroup( AgWords, [ 2, 3, 7 ] );
Group( a, b, c )
gap> Size( g );
42
gap> IsAbelian( g );
true ```

The default function `GroupElementsOps.AbelianGroup` uses the functions `CyclicGroup` and `DirectProduct` (see DirectProduct) to construct the abelian group.

`ElementaryAbelianGroup( n )` `ElementaryAbelianGroup( D, n )`

In the first form `ElementaryAbelianGroup` returns the elementary abelian group of size n as a permutation group. n must be a positive prime power of course. In the second form D must be a domain of group elements, e.g., `Permutations` or `AgWords`, and `ElementaryAbelianGroup` returns the elementary abelian group as a group of elements of this type.

```    gap> ElementaryAbelianGroup( 16 );
Group( (1,2), (3,4), (5,6), (7,8) )
gap> ElementaryAbelianGroup( AgWords, 3 ^ 10 );
Group( m59049_1, m59049_2, m59049_3, m59049_4, m59049_5, m59049_6,
m59049_7, m59049_8, m59049_9, m59049_10 ) ```

The default function `GroupElementsOps.ElementaryAbelianGroup` uses `CyclicGroup` and `DirectProduct` (see DirectProduct to construct the elementary abelian group.

`DihedralGroup( n )` `DihedralGroup( D, n )`

In the first form `DihedralGroup` returns the dihedral group of size n as a permutation group. n must be a positive even integer. In the second form D must be a domain of group elements, e.g., `Permutations` or `AgWords`, and `DihedralGroup` returns the dihedral group as a group of elements of this type.

```    gap> DihedralGroup( 12 );
Group( (1,2,3,4,5,6), (2,6)(3,5) ) ```

`PolyhedralGroup( p, q )` `PolyhedralGroup( D, p, q )`

In the first form `PolyhedralGroup` returns the polyhedral group of size `p * q` as a permutation group. p and q must be positive integers and there must exist a nontrivial p-th root of unity modulo every prime factor of q. In the second form D must be a domain of group elements, e.g., `Permutations` or `Words`, and `PolyhedralGroup` returns the polyhedral group as a group of elements of this type.

```    gap> PolyhedralGroup( 3, 13 );
Group( ( 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13), ( 2, 4,10)( 3, 7, 6)
( 5,13,11)( 8, 9,12) )
gap> Size( last );
39 ```

`SymmetricGroup( d )` `SymmetricGroup( D, d )`

In the first form `SymmetricGroup` returns the symmetric group of degree d as a permutation group. d must be a positive integer. In the second form D must be a domain of group elements, e.g., `Permutations` or `Words`, and `SymmetricGroup` returns the symmetric group as a group of elements of this type.

```    gap> SymmetricGroup( 8 );
Group( (1,8), (2,8), (3,8), (4,8), (5,8), (6,8), (7,8) )
gap> Size( last );
40320 ```

`AlternatingGroup( d )` `AlternatingGroup( D, d )`

In the first form `AlternatingGroup` returns the alternating group of degree d as a permutation group. d must be a positive integer. In the second form D must be a domain of group elements, e.g., `Permutations` or `Words`, and `AlternatingGroup` returns the alternating group as a group of elements of this type.

```    gap> AlternatingGroup( 8 );
Group( (1,2,8), (2,3,8), (3,4,8), (4,5,8), (5,6,8), (6,7,8) )
gap> Size( last );
20160 ```

`GeneralLinearGroup( n, q )` `GeneralLinearGroup( D, n, q )`

In the first form `GeneralLinearGroup` returns the general linear group GL( <n>, <q> ) as a matrix group. In the second form D must be a domain of group elements, e.g., `Permutations` or `AgWords`, and `GeneralLinearGroup` returns GL( <n>, <q> ) as a group of elements of that type.

```    gap> g := GeneralLinearGroup( 2, 4 ); Size( g );
GL(2,4)
180 ```

`SpecialLinearGroup( n, q )` `SpecialLinearGroup( D, n, q )`

In the first form `SpecialLinearGroup` returns the special linear group SL( <n>, <q> ) as a matrix group. In the second form D must be a domain of group elements, e.g., `Permutations` or `AgWords`, and `SpecialLinearGroup` returns SL( <n>, <q> ) as a group of elements of that type.

```    gap> g := SpecialLinearGroup( 3, 4 ); Size( g );
SL(3,4)
60480 ```

`SymplecticGroup( n, q )` `SymplecticGroup( D, n, q )`

In the first form `SymplecticGroup` returns the symplectic group SP( <n>, <q> ) as a matrix group. In the second form D must be a domain of group elements, e.g., `Permutations` or `AgWords`, and `SymplecticGroup` returns SP( <n>, <q> ) as a group of elements of that type.

```    gap> g := SymplecticGroup( 4, 2 ); Size( g );
SP(4,2)
720 ```

`GeneralUnitaryGroup( n, q )` `GeneralUnitaryGroup( D, n, q )`

In the first form `GeneralUnitaryGroup` returns the general unitary group GU( <n>, <q> ) as a matrix group. In the second form D must be a domain of group elements, e.g., `Permutations` or `AgWords`, and `GeneralUnitaryGroup` returns GU( <n>, <q> ) as a group of elements of that type.

```    gap> g := GeneralUnitaryGroup( 3, 3 ); Size( g );
GU(3,3)
24192 ```

`SpecialUnitaryGroup( n, q )` `SpecialUnitaryGroup( D, n, q )`

In the first form `SpecialUnitaryGroup` returns the special unitary group SU( <n>, <q> ) as a matrix group. In the second form D must be a domain of group elements, e.g., `Permutations` or `AgWords`, and `SpecialUnitaryGroup` returns SU( <n>, <q> ) as a group of elements of that type.

```    gap> g := SpecialUnitaryGroup( 3, 3 ); Size( g );
SU(3,3)
6048 ```

`MathieuGroup( d )`

`MathieuGroup` returns the Mathieu group of degree d as a permutation group. d is expected to be 11, 12, 22, 23, or 24.

```    gap> g := MathieuGroup( 12 ); Size( g );
Group( ( 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11), ( 3, 7,11, 8)
( 4,10, 5, 6), ( 1,12)( 2,11)( 3, 6)( 4, 8)( 5, 9)( 7,10) )
95040```

GAP 3.4.4
April 1997