1<!--
2
3  intro.xml            orb package documentation
4                                                               Juergen Mueller
5                                                               Max Neunhoeffer
6                                                                  Felix Noeske
7
8         Copyright (C) 2005-2008 by the authors
9
10This chapter gives a short introduction and explains the philosophy
11behind the package.
12
13-->
14
15<Chapter Label="intro">
16<Heading>Introduction</Heading>
17
18<Section Label="philosophy">
19<Heading>Motivation for this package</Heading>
20
21This package is about orbit enumeration. It bundles fundamental
22algorithms for orbit enumeration as well as more sophisticated
23special-purpose algorithms for very large orbits.
24
25<P/>
26The fundamental methods are basically an alternative implementation to
27the orbit algorithms in the &GAP; library. We tried to make them more
28flexible and more efficient at the same time, therefore backwards
29compatibility with respect to the user interface had to be given up.
30In addition, more information about how an orbit was produced is
31retained and is available for further usage. These orbit enumeration
32algorithms build on even more fundamental code for hash tables.
33
34<P/>
35The higher level algorithms basically implement the idea to enumerate
36an orbit <Q>by suborbits</Q> with respect to one or more subgroups.
37While these orbit-by-suborbit algorithms are much more efficient in
38many cases, they very often need careful and sometimes difficult
39preparations by the user. They are definitely not intended to be
40<Q>push-the-button-tools</Q> but require a considerable amount of
41knowledge from the <Q>pilot</Q>.
42
43<P/>
44Quite a bit of the code in this package consists in fact of
45interactive tools to enable users to prepare the data for the
46orbit-by-suborbit algorithms to work.
47</Section>
48
49<Section Label="overview">
50<Heading>Overview over this manual</Heading>
51
52Chapter <Ref Chap="install"/> describes the installation of this package.
53Chapter <Ref Chap="basic"/> describes our reimplementation of the basic
54orbit algorithm. Chapter <Ref Chap="hash"/> describes our
55toolbox for hash tables, Chapter <Ref Chap="cache"/> explains
56caching data structures, whereas Chapter <Ref Chap="avl"/> describes
57our implementation of AVL trees. Chapter <Ref Chap="random"/> covers
58tools to use random methods in groups. Chapter <Ref Chap="search"/>
59describes a lot of tools to search in groups and orbits. These
60techniques are basically intended to provide the data structures
61necessary to run the code described in Chapter <Ref
62    Chap="bysuborbit"/> to use the orbit-by-suborbit algorithms.
63Currently, Chapter <Ref Chap="quotfinder"/> is an empty placeholder.
64In some future version of this package it will contain a description
65of code which helps users to find nice quotients of modules which is
66also needed for the orbit-by-suborbit algorithms. However, since the
67interface to this code is not yet stable, we chose not to document it
68as of now, in particular because it relies on other not yet published
69packages as of the time of this writing.
70Finally, Chapter <Ref Chap="examples"/>
71shows an instructive examples for the more sophisticated
72usage of this package.
73</Section>
74
75<Section Label="feedback">
76<Heading>Feedback</Heading>
77
78For bug reports, feature requests and suggestions, please use our
79<URL Text="issue tracker">https://github.com/gap-packages/orb/issues</URL>.
80
81</Section>
82
83<!-- ############################################################ -->
84
85</Chapter>
86