In this section G will denote a group (or monoid) defined by a rewriting system in the file groupname, and H a subgroup of G.
For any computation involving subgroups of a group or monoid, the user must first prepare an additional input file, called a substructure file that defines generators of the subgroup H as words in the generators of the parent structure G. These subgroup generators may also be given their own names: if given they must be distinct from those of the generators of G, even in the case where they are actually equal to one of the original generators. Names are only needed if a presentation of the subgroup on the specified generators is required, or the user requires information about how group elements are expressed as a product of a subgroup element and a coset representative.
If the file containing the rewriting system for G is called groupname, then the file containing the definitions (and possibly names) of the generators of H should be called groupname.subsuffix, where it is strongly recommended that subsuffix has the string sub as its first three letters. Some examples can be found in the directory examples/subgroups. MAF will then use these two files to generate an input file for the coset system, according to the scheme described in Coset system filenames.
There are three types of substructure file, corresponding to the three types of coset system supported by MAF. In examples/subgroups there is a file called t(4_2_4) that defines a presentation of the P4MM wallpaper group:
#P4MM triangle group presentation # b + # / |a # +---+ # c _RWS := rec ( isRWS := true, generatorOrder := [a,b,c], ordering := "shortlex", inverses := [a,b,c], equations := [ [c*a*c*a,IdWord], [b*a*b*a*b*a*b*a,IdWord], [c*b*c*b*c*b*c*b,IdWord] ] );
There are various substructure files for this group. We here show one for each type of coset system.
t(4_2_4).sub specifies generators for a subgroup isomorphic to the P2MM wallpaper group.
#Subgroup isomorphic to P2MM, generated by 4 involutions _RWS_Sub:= rec ( subGenerators:= [ c, a, b*a*b, b*c*b ] );
There is no need to specify the inverse of any of the subgroup generators as a subgroup generator.The coset system MAF generates from these two files is called t(4_2_4).cos and looks like this:
#Generated by MAF _RWS_Cos := rec ( isRWS := true, isConfluent := false, generatorOrder := [a,b,c,_H], ordering := "wreathprod", level := [2,2,2,1], inverses := [a,b,c,], equations := [ [c*a*c*a,IdWord], [b*a*b*a*b*a*b*a,IdWord], [c*b*c*b*c*b*c*b,IdWord], [_H*c,_H], [_H*a,_H], [_H*b*a*b,_H], [_H*b*c*b,_H] ] );
t(4_2_4).subgen specifies the same subgroup, but with named subgroup generators.
#Subgroup isomorphic to P2MM #x and y are reflections across the two legs of the base triangle. #z and w are reflections across the legs of the triangle which #is the reflection of the base triangle in its hypotenuse _RWS_Sub:= rec ( subGenerators:= [ c, a, b*a*b, b*c*b ], subGeneratorNames := [ x, y, z, w ], subGeneratorInverseNames := [ x, y, z, w ] );
The coset system MAF generates for these two files is called t(4_2_4).cosgen and looks like this:
#Generated by MAF _RWS_Cos := rec ( isRWS := true, isConfluent := false, generatorOrder := [a,b,c,_H,x,y,z,w], ordering := "wreathprod", level := [2,2,2,1,1,1,1,1], inverses := [a,b,c,,x,y,z,w], equations := [ [c*a*c*a,IdWord], [b*a*b*a*b*a*b*a,IdWord], [c*b*c*b*c*b*c*b,IdWord], [_H*c,x*_H], [_H*a,y*_H], [_H*b*a*b,z*_H], [_H*b*c*b,w*_H] ] );
If you use named subgroup generators then you are strongly recommended to include the
subGeneratorInverseNames field as well. MAF follows KBMAG in its treatment of subgroup generator inverses, and this field is actually optional, but omitting it may not give the desired results.
This point is further explained in Inverses.
MAF will always try to generate a coset rewriting system with named subgroup generators when the -cos command tail is used. So, if you want to generate a simple coset system, then make sure you do not give the subgroup generators names.
t(4_2_4).subnor specifies another subgroup, this time as the normal closure of the generating set.
#Subgroup of index 16 isomorphic to P2 _RWS_Sub:= rec ( normalSubGenerators := [ c*b*c*b ] );
The coset system MAF generates from these two files is called t(4_2_4).cosnor and looks like this:
#Generated by MAF _RWS_Cos := rec ( isRWS := true, isConfluent := false, generatorOrder := [a,b,c,_N], ordering := "wreathprod", level := [2,2,2,1], inverses := [a,b,c,], equations := [ [c*a*c*a,IdWord], [b*a*b*a*b*a*b*a,IdWord], [c*b*c*b*c*b*c*b,IdWord], [_N*c*b*c*b,_N] ] );
With this type of substructure file you may not specify names for the subgroup generators, and once again, there is no need to include the inverse of the generators as generators. MAF uses the symbol
_N to represent the subgroup, rather than
_H in a coset system generated from this type of file. Therefore, in this case you must not use
_N as the name of a generator.
The syntax is once again based on that of the GAP record, and should be self-explanatory. You may like to note the following points:
normalSubGeneratorslists may not have gaps. MAF does allow an empty list, but KBMAG does not. Exactly one of these two fields must be present, otherwise the file is not recognised as a substructure file. The syntax for subgroup generators is the same as was described for words in Input files
subGeneratorNamesfield is optional but, if present, the list defined must have the same length as that defined by
subGenerators, and must have no gaps. This field is only permitted if you use the
subGeneratorsfield to specify the generators. The names in the list you should follow the same rules as were given for group generators in Input files.
subGeneratorInverseNames field is present then the list must have the same length as
subGeneratorNames, but it may have gaps. The names occurring in it must all occur in
subGeneratorNames. It is used to record the fact that certain of these generators are inverse to each other; it is the user's responsibility to ensure that this information is accurate (mistakes here will usually
result in bizarre and spurious output). Both MAF and KBMAG will generally add extra named subgroup generators for any subgroup generator for which an inverse has not been specified, and will do this even if, as in the examples above, the subgroup generators are obviously involutions. Furthermore, any inverse subgroup generators that are added by MAF, will come after the subgroup generators specified in the file, and will use the ^-1 suffix to make the new subgroup generators.
Continuing to use t(4_2_4) as our main input file:
#subgroup of index 2 isomorphic to P4 _RWS_Sub := rec ( subGenerators:=[a*b,b*c], subGeneratorNames:=[x,y], );
generates a coset system with the following generators:
generatorOrder := [a,A,b,B,_H,x,y,x^-1,y^-1]
#subgroup of index 2 isomorphic to P4 _RWS_Sub := rec ( subGenerators:=[a*b,b*a,b*c,c*b], subGeneratorNames:=[x,X,y,Y], subGeneratorInverseNames:=[X,x,Y,y], );
generates a coset system with these generators:
generatorOrder := [a,A,b,B,_H,x,X,y,Y]
The latter is more likely to give a confluent rewriting system.
In this example we have computed the inverses of the original subgroup generators explicitly. In the author's experience it is all too easy to make mistakes when doing this. The best way of avoiding this, unless you need also to be able to use the substructure file with KBMAG, is to use the MAF specific syntax (expression)^-1. For example in this case the
subGenerators field from the example above would like this:
Both MAF and KBMAG make it possible to create a coset system for a monoid as well as a group. In other words MAF does not require inverses to have been specified for the generators of the underlying object. However, if the subgroup generators are named it will be assumed that the subgroup generators are invertible, because inverses are treated as described in the previous section. However, it is possible to use makecosfile to generate a file in which the subgroup generators do not have explicit inverses using a command line such as makecosfile -sg -ni groupname subsuffix. In general the results of using such a coset system will only be meaningful if the substructure does actually generate a subgroup. If your aim is to express group elements as positive words (not involving inverses) it is better to use a wreath-product ordering with appropriately chosen levels than to remove the inverse generators from the alphabet.
Substructure files of the first two types can also be used to generate a multiplier for a specific collection of words for groups for which an automatic structure has been computed. For example the command line gpmult t(4_2_4) -sub subgen will generate a multiplier for the subgroup generators contained in t(4_2_4).subgen. The multiplier is output to the file t(4_2_4).subgen.gmg.