[Up] [Previous] [Next] [Index]

# 2 Functionality of the FGA package

### Sections

1. New operations for free groups
2. Method installations
3. Automorphism groups of free groups

This chapter describes methods available from the FGA package.

In the following, let f be a free group created by `FreeGroup(`n`)`, and let u, u1 and u2 be finitely generated subgroups of f created by `Group` or `Subgroup`, or computed from some other subgroup of f. Let elm be an element of f.

For example:

    gap> f := FreeGroup( 2 );
    <free group on the generators [ f1, f2 ]>
    gap> u := Group( f.1^2, f.2^2, f.1*f.2 );
    Group([ f1^2, f2^2 ])
    gap> u1 := Subgroup( u, [f.1^2, f.1^4*f.2^6] );
    Group([ f1^2, f1^4*f2^6 ])
    gap> elm := f.1;
    f1
    gap> u2 := Normalizer( u, elm );
    Group([ f1^2 ])

## 2.1 New operations for free groups

These new operations are available for finitely generated subgroups of free groups:

- `FreeGeneratorsOfGroup(` u`) A`

  returns a list of free generators of the finitely generated free group u.

  The elements in this list will form an N-reduced set. In addition to being a free (and thus minimal) generating set for u, this means that whenever v1, v2 and v3 are elements or inverses of elements of this list, then

  - v1 v2 neq1 implies |v1 v2| geqmax(|v1|, |v2|), and
  - v1 v2 neq1 and v2 v3 neq1 implies |v1 v2 v3| > |v1| - |v2| + |v3|

  hold, where |.| denotes the word length.

- `RankOfFreeGroup(` u`) A`
- `Rank(` u`) O`

  returns the rank of the finitely generated free group u.

  ## 2.2 Method installations

  This section list operations that are already known to GAP. FGA installs new methods for them so that they can also be used with free groups.

- `Normalizer(` u1`,` u2`) O`
- `Normalizer(` u`,` elm`) O`

  The first variant returns the normalizer of the finitely generated subgroup u2 in u1.

  The second variant returns the normalizer of langleelm rangle in the finitely generated subgroup u (see Normalizer in the Reference Manual).

- `RepresentativeAction(` u`,` d`,` e`) O`
- `IsConjugate(` u`,` d`,` e`) O`

  `RepresentativeAction` returns an element r inu , where u is a finitely generated subgroup of a free group, such that dr=e, or fail, if no such r exists. d and e may be elements or subgroups of u.

  `IsConjugate` returns a boolean indicating whether such an element r exists.

- `Centralizer(` u`,` u2`) O`
- `Centralizer(` u`,` elm`) O`

  returns the centralizer of u2 or elm in the finitely generated subgroup u of a free group.

- `Index(` u1`,` u2`) O`
- `IndexNC(` u1`,` u2`) O`

  return the index of u2 in u1, where u1 and u2 are finitely generated subgroups of a free group. The first variant returns fail if u2 is not a subgroup of u1, the second may return anything in this case.

  ## 2.3 Automorphism groups of free groups

  The FGA package knows how to compute automorphism groups of free groups. This sections repeats the GAP standard methods to obtain them.

- `AutomorphismGroup(` u`) A`

  returns the automorphism group of the finitely generated subgroup u of a free group.

  Only a few methods will work with this group. But there is way to obtain an isomorphic finitely presented group:

- `IsomorphismFpGroup(` group`) A`

  returns an isomorphism of group to a finitely presented group. For automorphism groups of free groups, the FGA package implements the presentation of Neumann33. That finitely presented group itself can then be obtained with the command `Range`.

  Here is an example:

      gap> f := FreeGroup( 2 );
      <free group on the generators [ f1, f2 ]>
      gap> a := AutomorphismGroup( f );
      <group of size infinity with 3 generators>
      gap> iso := IsomorphismFpGroup( a );
      [ [ f1, f2 ] -> [ f1^-1, f2 ], [ f1, f2 ] -> [ f2, f1 ],
        [ f1, f2 ] -> [ f1*f2, f2 ] ] -> [ O, P, U ]
      gap> Range( iso );
      <fp group on the generators [ O, P, U ]>

  [Up] [Previous] [Next] [Index]