# 23.4 CosetTableFpGroup

`CosetTableFpGroup( G, H )`

`CosetTableFpGroup` returns the coset table of the finitely presented group G on the cosets of the subgroup H.

Basically a coset table is the permutation representation of the finitely presented group on the cosets of a subgroup (which need not be faithful if the subgroup has a nontrivial core). Most of the set theoretic and group functions use the regular representation of G, i.e., the coset table of G over the trivial subgroup.

The coset table is returned as a list of lists. For each generator of G and its inverse the table contains a generator list. A generator list is simply a list of integers. If l is the generator list for the generator g and `l[i] = j` then generator g takes the coset i to the coset j by multiplication from the right. Thus the permutation representation of G on the cosets of H is obtained by applying `PermList` to each generator list (see PermList). The coset table is standardized, i.e., the cosets are sorted with respect to the smallest word that lies in each coset.

```    gap> F2 := FreeGroup( "a", "b" );
Group( a, b )
gap> A5 := F2 / [ F2.1^2, F2.2^3, (F2.1*F2.2)^5 ];
Group( a, b )
gap> CosetTableFpGroup( A5,
>            Subgroup( A5, [ A5.1, A5.2*A5.1*A5.2*A5.1*A5.2^-1 ] ) );
[ [ 1, 3, 2, 5, 4 ],
[ 1, 3, 2, 5, 4 ],    # inverse of above, 'A5.1' is an involution
[ 2, 4, 3, 1, 5 ],
[ 4, 1, 3, 2, 5 ] ]   # inverse of above
gap> List( last, PermList );
[ (2,3)(4,5), (2,3)(4,5), (1,2,4), (1,4,2) ] ```

The coset table is computed by a method called coset enumeration. A Felsch strategy is used to decide how to define new cosets.

The variable `CosetTableFpGroupDefaultLimit` determines for how many cosets the table has initially room. `CosetTableFpGroup` will automatically extend this table if need arises, but this is an expensive operation. Thus you should set `CosetTableFpGroupDefaultLimit` to the number of cosets that you expect will be needed at most. However you should not set it too high, otherwise too much space will be used by the coset table.

The variable `CosetTableFpGroupDefaultMaxLimit` determines the maximal size of the coset table. If a coset enumeration reaches this limit it signals an error and enters the breakloop. You can either continue or quit the computation from there. Setting the limit to `0` allows arbitrary large coset tables.

GAP 3.4.4
April 1997