[MathJax on]

### 1 Introduction

#### 1.1 Motivation for this package

This package is about orbit enumeration. It bundles fundamental algorithms for orbit enumeration as well as more sophisticated special-purpose algorithms for very large orbits.

The fundamental methods are basically an alternative implementation to the orbit algorithms in the **GAP** library. We tried to make them more flexible and more efficient at the same time, therefore backwards compatibility with respect to the user interface had to be given up. In addition, more information about how an orbit was produced is retained and is available for further usage. These orbit enumeration algorithms build on even more fundamental code for hash tables.

The higher level algorithms basically implement the idea to enumerate an orbit "by suborbits" with respect to one or more subgroups. While these orbit-by-suborbit algorithms are much more efficient in many cases, they very often need careful and sometimes difficult preparations by the user. They are definitely not intended to be "push-the-button-tools" but require a considerable amount of knowledge from the "pilot".

Quite a bit of the code in this package consists in fact of interactive tools to enable users to prepare the data for the orbit-by-suborbit algorithms to work.

#### 1.2 Overview over this manual

Chapter 2 describes the installation of this package. Chapter 3 describes our reimplementation of the basic orbit algorithm. Chapter 4 describes our toolbox for hash tables, Chapter 5 explains caching data structures, whereas Chapter 8 describes our implementation of AVL trees. Chapter 6 covers tools to use random methods in groups. Chapter 7 describes a lot of tools to search in groups and orbits. These techniques are basically intended to provide the data structures necessary to run the code described in Chapter 9 to use the orbit-by-suborbit algorithms. Currently, Chapter 10 is an empty placeholder. In some future version of this package it will contain a description of code which helps users to find nice quotients of modules which is also needed for the orbit-by-suborbit algorithms. However, since the interface to this code is not yet stable, we chose not to document it as of now, in particular because it relies on other not yet published packages as of the time of this writing. Finally, Chapter 11 shows an instructive examples for the more sophisticated usage of this package.

#### 1.3 Feedback

For bug reports, feature requests and suggestions, please use our issue tracker.