Functions For Inspecting Orbits

This chapter provides an overview of the background material, and provide documentation for the main functions and data structures of the MAPCLASS package.

Overview of Main Functions
The following are the main ways for calculating the mapping class orbits for a given signature and group. This function calculates the orbit for the given group, genus and tuple. This function calculates the orbit for the given group, genus and tuple, with the r branch points partitioned as in partition. It uses the given constant to determine how many of the tuples it want to account for before exiting. This function also make use of GAP's OptionsStack if one desires to alter the algorithm runs. The following options and their defaults are given below.

Option Name
Default Value
InitialSizeCutOff
128
MaximumWeight
40
MinimumWeight
20
InitialWeight
20
BumpUp
7
KnockDown
7
InitialNumberOfRandomTuples
20
InitialCutOffValue
0
HashLength
5000
SaveOrbit
False

The majority of the options are uninteresting and only subtly alter the running of the routine.The options `InitialSizeCutOff`, `MaximumWeight`, `MinimumWeight`, `InitialWeight`,`BumpUp`, `KnockDown`, are the options controlling how the code handles the subgroup weighting discussed in the algorithm overview. The option `InitialNumberOfRandomTuples` decides how many tuples the routine collects before trying to see if they are in some pre-existing orbit. The option `InitialCutOffValue` decides at what point we stop searching for new orbits - if only large orbits are of interest then this can be set larger to ignore these. Finally the option `SaveOrbit` which is by default False can be set to the name of a directory in which you want to save orbits. This option then saves the orbits to files in the folder with "_name". S for example if you wish to save your orbits into the file _example then you would run `AllMCOrbits(group, genus, tuple: SaveOrbit:="example");` This calculates the orbits for the given arguments. Unlike the function, `GeneratingMCOrbits` calculates only those orbits whose tuples generate the whole of our original group. This calculates the orbits for the given arguments. Unlike the function, `GeneratingMCOrbitsCore` calculates only those orbits whose tuples generate the whole of our original group. As with , the argument partition must be a partition of the conjugacy classes represented in list form. We also have access to the full value of the options stack as in . an orbit record for an orbit containing tuple or fail Calculates the orbit of the tuple with respect to the given group, principaltuple and genus. a record with two keys `MinimizationTree` and `MinimumSet`. If `record` is the returned record then `record.MinimizationTree` is the list encoding the tree used to help minimize tuples.The list `record.MinimumSet` is a list of minimal elements which is also used to speed up tuple minimization. the minimal tuple in the same orbit of tuple. Take the minimisation data provided by and minimizes the given tuple. the minimal tuple in the same orbit of tuple. True if the tuple lies in the orbit. the index of tuple in orbit.TupleTable if in the orbit. If not in orbit returns fail. true if the two orbits are equal else returns fail. the length of the orbit. the tuple `orbit.TupleTable[index]`. the total number of possible generating tuples for the group and tuple. the total number of tuples we have to account for A partition of {1,\ldots, r} where r is the length of the tuple. The function returns a partition of {1,\ldots, r} such that i and j lie in the same block if and only if the elements `tuple[i]` and `tuple[j]` are member of the same conjugacy class. The program currently requires that the elements of the tuple be ordered such that if `tuple[i]` and `tuple[j]` are in the same conjugacy class with i \le j then so is`tuple[k]` for all i \le k \le j. the n-th orbit record from the project with project "name" By default the function searches the current working directory for the saved project folder and searches inside this for the n-th orbit. If no such orbit exists it returns fail. If an optional argument path is provided then it searches this path for a folder with the name specified (note that path expects a `Directory` object). If an orbit exists it returns it as a record as outlined in the data structure section. Saves the orbit to filename "n" in the directory `'_name'`.
Key Data Structures
Many of the above function require or return a few key data structures which we aim to document.
The Orbit Record
Many of the functions return or expect an orbit "object". This object is in fact record with the following values: `ProjectName` - the name of the project `PrincipalFiniteGroup` - the finite group `OurG` - genus `OurR` - number of branch points `OurN` - number of points on which our group acts `NumberOfGenerators` - 2 `OurG`+ `OurR` `OurFreeGroup` - a free group on `NumberOfGenerators` letters `AbsGens` - generators for `OurFreeGroup` `OurAlpha` - generators of `OurFreeGroup`corresponding to the \alpha_i type loops in the fundamental group ( the first g elements of `AbsGens`) `OurBeta` - elements of `OurFreeGroup` corresponding to \beta type loops `OurGamma` - generators of `OurFreeGroup` corresponding to the loops around branch points `TupleTable` - a table containing all the tuples in the orbit `HashLength` `Hash` `PrimeCode` `OurAction` `ActionOnOrbit` `MinimizationTree`- minimization structure `MinimumSet`- minimizaton structure
The Tuple Table
The tuple table is a list. Each element of the list is a record with the names, tuple and next. If `orbit` is an orbit object then `orbit.TupleTable[n].tuple` returns the tuple at index n of the tuple table.
A Sample Session