MAF : Reference : File names and formats : Substructure files

Substructure files

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.

  1. Substructure file for a simple 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]
      ]
    );
    
  2. Substructure file for a coset system with named subgroup generators

    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]
      ]
    );
    
    Tip
    The author often finds it useful to process a substructure file with named subgroup generators as a simple coset system (usually when the coset system misbehaves because of long H words). One can do this by the simple expedient of replacing the "," after the ']' which terminates the subGenerators field with a ");". Both MAF and KBMAG will simply ignore the rest of the file if this is done.

    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.


  3. Substructure file for a normal closure coset system

    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.

Rules for substructure files

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:

Inverses

If the 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]

whereas

#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:

subGenerators:=[a*b,(a*b)^-1,b*c,(b*c)^-1],

Coset systems of monoids

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.

Use of substructure files with gpmult

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.