GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1%%2%W FGA.tex FGA documentation Christian Sievers3%%4%Y 2003 - 20165%%67%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8\Chapter{Functionality of the FGA package}910\atindex{Functionality of the FGA package}{@Functionality %11of the {\FGA} package|indexit}1213This chapter describes methods available from the {\FGA} package.1415In the following, let <f> be a free group created by `FreeGroup(<n>)',16and let <u>, <u1> and <u2> be finitely generated subgroups of <f>17created by `Group' or `Subgroup', or computed from some other subgroup18of <f>. Let <elm> be an element of <f>.1920For example:2122\beginexample23gap> f := FreeGroup( 2 );24<free group on the generators [ f1, f2 ]>25gap> u := Group( f.1^2, f.2^2, f.1*f.2 );26Group([ f1^2, f2^2, f1*f2 ])27gap> u1 := Subgroup( u, [f.1^2, f.1^4*f.2^6] );28Group([ f1^2, f1^4*f2^6 ])29gap> elm := f.1;30f131gap> u2 := Normalizer( u, elm );32Group([ f1^2 ])33\endexample3435%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36\Section{New operations for free groups}3738These new operations are available for finitely generated subgroups of39free groups:4041\>FreeGeneratorsOfGroup( <u> ) A4243returns a list of free generators of the finitely generated subgroup44<u> of a free group.4546The elements in this list form an N-reduced set. In addition to47being a free (and thus minimal) generating set for <u>, this means48that whenever <v1>, <v2> and <v3> are elements or inverses of elements49of this list, then5051\beginlist%unordered52\item{--}53$<v1><v2>\neq1$ implies $|<v1><v2>|\geq\max(|<v1>|, |<v2>|)$, and54\item{--}55$<v1><v2>\neq1$ and $<v2><v3>\neq1$ implies56$|<v1><v2><v3>| > |<v1>| - |<v2>| + |<v3>|$57\endlist5859hold, where $|.|$ denotes the word length.6061\>RankOfFreeGroup( <u> ) A62\>Rank( <u> ) O6364returns the rank of the finitely generated subgroup <u> of a free65group.6667\>CyclicallyReducedWord( <elm> ) O6869returns the cyclically reduced form of <elm>.7071%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%72\Section{Method installations}7374This section lists operations that are already known to {\GAP}.75{\FGA} installs new methods for them so that they can also be used76with free groups.77In cases where {\FGA} installs methods that are usually only used78internally, user functions are shown instead.798081\>Normalizer( <u1>, <u2> ) O82\>Normalizer( <u>, <elm> ) O8384The first variant returns the normalizer of the finitely generated85subgroup <u2> in <u1>.8687The second variant returns the normalizer of $\langle <elm> \rangle$88in the finitely generated subgroup <u> (see "ref:Normalizer" in the89Reference Manual).9091\>RepresentativeAction( <u>, <d>, <e> ) O92\>IsConjugate( <u>, <d>, <e> ) O9394`RepresentativeAction' returns an element $ <r> \in <u> $,95where <u> is a finitely generated subgroup of a free group, such96that $<d>^{<r>}=<e>$, or fail, if no such <r> exists. <d> and <e> may97be elements or subgroups of <u>.9899`IsConjugate' returns a boolean indicating whether such an element <r>100exists.101102\>Centralizer( <u>, <u2> ) O103\>Centralizer( <u>, <elm> ) O104105returns the centralizer of <u2> or <elm> in the finitely generated106subgroup <u> of a free group.107108\>Index( <u1>, <u2> ) O109\>IndexNC( <u1>, <u2> ) O110111return the index of <u2> in <u1>, where <u1> and <u2> are finitely112generated subgroups of a free group. The first variant returns113fail if <u2> is not a subgroup of <u1>, the second may return114anything in this case.115116\>Intersection( <u1>, <u2> \dots ) F117118returns the intersection of <u1> and <u2>, where <u1> and <u2> are119finitely generated subgroups of a free group.120121\>`<elm> in <u>'{in} O122123tests whether <elm> is contained in the finitely generated subgroup124<u> of a free group.125126\>IsSubgroup( <u1>, <u2> ) F127128tests whether <u2> is a subgroup of <u1>, where <u1> and <u2> are finitely129generated subgroups of a free group.130131\>`<u1> = <u2>'{equality} O132133test whether the two finitely generated subgroups <u1> and <u2> of a134free group are equal.135136\>MinimalGeneratingSet( <u> ) A137\>SmallGeneratingSet( <u> ) A138\>GeneratorsOfGroup( <u> ) A139140return generating sets for the finitely generated subgroup <u> of a141free group. `MinimalGeneratingSet' and `SmallGeneratingSet' return142the same free generators as `FreeGeneratorsOfGroup', which are in143fact a minimal generating set. `GeneratorsOfGroup' also returns these144generators, if no other generators were stored at creation time.145146%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%147\Section{Constructive membership test}148149It is not only possible to test whether an element is in a finitely150generated subgroup of free group, this can also be done151constructively. The idiomatic way to do so is by using a152homomorphism.153154Here is an example that computes how to write `f.1^2' in the155generators `a=f1^2*f2^2' and `b=f.1^2*f.2', checks the result, and156then tries to write `f.1' in the same generators:157158\beginexample159gap> f := FreeGroup( 2 );160<free group on the generators [ f1, f2 ]>161gap> ua := f.1^2*f.2^2;; ub := f.1^2*f.2;;162gap> u := Group( ua, ub );;163gap> g := FreeGroup( "a", "b" );;164gap> hom := GroupHomomorphismByImages( g, u,165> GeneratorsOfGroup(g),166> GeneratorsOfGroup(u) );167[ a, b ] -> [ f1^2*f2^2, f1^2*f2 ]168gap> # how can f.1^2 be expressed?169gap> PreImagesRepresentative( hom, f.1^2 );170b*a^-1*b171gap> last ^ hom; # check this172f1^2173gap> ub * ua^-1 * ub; # another check174f1^2175gap> PreImagesRepresentative( hom, f.1 ); # try f.1176fail177gap> f.1 in u;178false179\endexample180181There are also lower level operations to get the same results.182183\>AsWordLetterRepInGenerators( <elm>, <u> ) O184\>AsWordLetterRepInFreeGenerators( <elm>, <u> ) O185186return a letter representation187(see Section~"ref:Representations for Associative Words" in the {\GAP}188Reference Manual)189of the given <elm> relative to the generators the group was created190with or the free generators as returned by `FreeGeneratorsOfGroup'.191192Continuing the above example:193194\beginexample195gap> AsWordLetterRepInGenerators( f.1^2, u );196[ 2, -1, 2 ]197gap> AsWordLetterRepInFreeGenerators( f.1^2, u );198[ 2 ]199\endexample200201This means: to get `f.1^2', multiply the second of the given generators202with the inverse of the first and again with the second; or just take203the second free generator.204205%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%206\Section{Automorphism groups of free groups}207208The {\FGA} package knows presentations of the automorphism groups of free209groups. It also allows to express an automorphism as word in the210generators of these presentations.211This sections repeats the {\GAP} standard methods to do so and shows212functions to obtain the generating automorphisms.213214\>AutomorphismGroup( <u> ) A215216returns the automorphism group of the finitely generated subgroup <u>217of a free group.218219Only a few methods will work with this group. But there is a way to220obtain an isomorphic finitely presented group:221222\>IsomorphismFpGroup( <group> ) A223224returns an isomorphism of <group> to a finitely presented group.225For automorphism groups of free groups, the {\FGA} package implements226the presentations of \cite{Neumann33}.227The finitely presented group itself can then be obtained with the228command `Range'.229230Here is an example:231232\beginexample233gap> f := FreeGroup( 2 );;234gap> a := AutomorphismGroup( f );;235gap> iso := IsomorphismFpGroup( a );;236gap> Range( iso );237<fp group on the generators [ O, P, U ]>238\endexample239240To express an automorphism as word in the generators of the241presentation, just apply the isomorphism obtained from242`IsomorphismFpGroup'.243244\beginexample245gap> aut := GroupHomomorphismByImages( f, f,246> GeneratorsOfGroup( f ), [ f.1^f.2, f.1*f.2 ] );247[ f1, f2 ] -> [ f2^-1*f1*f2, f1*f2 ]248gap> ImageElm( iso, aut );249O^2*U*O*P^-1*U250\endexample251252It is also possible to use `aut^iso' or `Image( iso, aut )'.253Using `Image' will perform additional checks on the arguments.254255The {\FGA} package provides a simpler way to create endomorphisms:256257\>FreeGroupEndomorphismByImages( <g>, <imgs> ) F258259returns the endomorphism that maps the free generators of the finitely260generated subgroup <g> of a free group to the elements listed in <imgs>.261You may then apply `IsBijective' to check whether it is an262automorphism.263264The follwowing functions return automorphisms that correspond to the265generators in the presentation:266267\>FreeGroupAutomorphismsGeneratorO( <group> ) F268\>FreeGroupAutomorphismsGeneratorP( <group> ) F269\>FreeGroupAutomorphismsGeneratorU( <group> ) F270\>FreeGroupAutomorphismsGeneratorS( <group> ) F271\>FreeGroupAutomorphismsGeneratorT( <group> ) F272\>FreeGroupAutomorphismsGeneratorQ( <group> ) F273\>FreeGroupAutomorphismsGeneratorR( <group> ) F274275return the automorphism which maps the free generators276[$ x_1, x_2, \dots, x_n $] of <group> to277\beginlist278\item{O:} [$ x_1^{-1}, x_2, \dots, x_n $] ($n\ge1$)279\item{P:} [$ x_2, x_1, x_3, \dots, x_n $] ($n\ge2$)280\item{U:} [$ x_1x_2, x_2, x_3, \dots, x_n $] ($n\ge2$)281\item{S:} [$ x_2^{-1}, x_3^{-1}, \dots, x_n^{-1}, x_1^{-1} $] ($n\ge1$)282\item{T:} [$ x_2, x_1^{-1}, x_3, \dots, x_n $] ($n\ge2$)283\item{Q:} [$ x_2, x_3, \dots, x_n, x_1 $] ($n\ge2$)284\item{R:} [$ x_2^{-1}, x_1, x_3, x_4, \dots,285x_{n-2}, x_nx_{n-1}^{-1}, x_{n-1}^{-1} $] ($n\ge4$)286\endlist287288289%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%290%%291%E292293294295