Unifpack is a set of programs and C libraries designed to
help in the study of Riemann Surfaces. The first version was written
in the beginning of 1992 as part of Carlos' undergraduate thesis.
See the **Unifpack User's Manual**
for a complete explanation of the program. Here is a brief summary:

Basically Unifpack accepts a presentation of a finite group and calculates the Cayley graph of the group for that presentation. If the presentation is ``admissible'' in the sense described below, Unifpack can calculate a fundamental polygon for a uniformization of a Riemann surface that admits this group as a group of symmetries.

The calculated Riemann surface is displayed as a tiling in the hyperbolic plane (Unifpack only works with surfaces of genus > 1). The ``pelt'' of the split-apart surface forms a large tile of which a single copy is displayed. This large tile is then split into smaller tiles representing fundamental domains of the action of the symmetry group on the surface.

Usually there is a family of Riemann surfaces that admit such a group of symmetries; this maps to a family of fundamental polygons controlled by some parameters. Unifpack lets you change these parameters and thus study the family of Riemann surfaces. Different admissible presentations of the same group generally produce different families of surfaces; the families may even differ in genus.

Although Unifpack normally works with conformal symmetries, in some cases the symmetry group can be extended to include reflection symmetries (which reverse orientation). In these cases, the program offers a boolean ``parameter'' which enables the display of the reflection axes in a lighter color (it's not really a parameter of the Riemann surface).

In Unifpack, the symmetry groups are specified using generators and relations. The main difficulty with this form of input is that it is difficult to tell if the group you have defined is finite! However, this is required in order for the program to work.

The second condition for a presentation to be ``admissible'' is that the relations must be written in a special form, listing in order:

- a power of each generator;
- a power of the product of all the generators; and
- other relations consistent with these (optional).

In Unifpack, writing out the relations in this form picks out a genus for the Riemann surface. The final condition for ``admissibility'' is that this genus be greater than 1 so that the surface can be displayed using a tiling of the hyperbolic plane.

The Geometry Center University of Minnesota 400 Lind Hall 207 Church Street S.E. Minneapolis, MN 55455