A number of functions are available that apply specifically to finitely generated subgroups of free groups. For example, it is possible to determine the index of one such subgroup in another, which may be infinite, and computation of intersections and normalisers of subgroups, and conjugacy testing are all possible. The relevant algorithms are described in [Sim94, Chapter 4], for example.
The largest (with respect to containment) free group of which F is known to be a subgroup. The remaining functions will fail and exit with errors if their arguments do not have a common supergroup.
Returns true in x ∈H, where x is required to be an element of FSSupergroup(F).
Determines whether H is a subgroup of free group K.
Determines whether free groups H and K are equal.
The index in the free group F of subgroup H, which may be ∞. An error will occur if H is not a subgroup of F.
Returns true if the index in the free group F of subgroup H is finite. An error will occur if H is not a subgroup of F.
Returns a sequence of free generators of free group H and also the same group H defined on those generators.
Computes the intersection of free groups H and K.
Computes the centralizer in free group F of element x. An error will occur if x is not in F.
Determines whether elements x and y of free group F are conjugate in F and if so returns a conjugating element. An error will occur if either x or y is not in F.
Computes the centralizer in free group F of subgroup H. An error will occur if H is not a subgroup of F.
Computes the normalizer in free group F of subgroup H. An error will occur if H is not a subgroup of F.
Determines whether subgroups H and K of free group F are conjugate in F and if so returns a conjugating element. An error will occur if either H or K is not a subgroup of F.
Starting with the free group of rank 3 some subgroup calculations will be demonstrated.
> F<a,b,c> := FreeGroup(3); > F; Finitely presented group F on 3 generators (free) > H<x, y> := sub< F | a, b>; > H; Finitely presented group H on 2 generators Generators as words in group F x = a y = b > Index(F, H); 0
The next step is to produce a more interesting subgroup of F. To get one, the subgroup H will be conjugated by an element of F.
> K := H^(a*b*c); > K; Finitely presented group K on 2 generators Generators as words in group F K.1 = c^-1 * b^-1 * a * b * c K.2 = c^-1 * b^-1 * a^-1 * b * a * b * c > H eq K; false > H meet K; Finitely presented group on 1 generator Generators as words in group F $.1 = Id(F) > N := Normalizer(F, K); > N; Finitely presented group N on 2 generators Generators as words in group F N.1 = a^c N.2 = b^c > K eq N; trueThe normaliser N of K has nice generators but it is equal to K so K is self-normalising.