# Fundamental Groups of 3-Manifolds

This database consists of the fundamental groups of the 10,986 small-volume closed hyperbolic manifolds in the Hodgson–Weeks census. The presentations included were generated by Jeffrey Weeks’ program *SnapPea* `http://www.geometrygames.org/SnapPea/`. Information about finite-index subgroups with homology was generated by Dunfield and Thurston in [[Dunfield and Thurston, 2003](../../references.md#cite-virtualhaken)].

## Basic Functions

The basic access functions for the database are described in this section.

The result returned by the `Manifold` function is a record with a number of fields containing information about the manifold and its fundamental group. The fields of the records are as follows:

Field `Name`: A string giving a name to the manifold $M$.

Field `Volume`: The volume of $M$ as a floating point number.

Field `Homology`: A sequence of integers describing the first homology group of $M$.

Field `Group`; The fundamental group of $M$ as a finitely presented group.

Field `GoodCoverImage`: A possibly empty sequence of permutations or integers 1 representing the identity permutation. These permutations define a homomorphism from the fundamental group to $S_n$, such that the kernel of the homomorphism has infinite abelianization.

Field `GoodCover`: A list describing the construction of the good cover.

Field `Degree`: A positive integer, the degree of the `GoodCoverImage` permutation representation.

Field `KnownPosBettiCover`: A boolean value, always true in the current database.

Field `KnownWeakPosBettiCover`: A boolean value, always true in the current database.

Field `Reason`: A string, one of `"AbelianInvariants"`, `"RationalReconstruction"` or `"MAGMA"`.

Field `Rank`: A positive integer.

Field `GoodCoverImageU`: A possibly empty sequence of permutations or integers 1 representing the identity permutation.

### `ManifoldDatabase() -> DB`

Open the database and return a reference to it.

### `Manifold(D, i): DB, RngIntElt -> Rec`

### `Manifold(D, name): DB, MonStgElt -> Rec`

Extract the associated record from the database of fundamental groups of 3-dimensional manifolds. The manifold may be specified by the index $i$ ($1 \le i \le 11126$) or a name from the Hodgson–Weeks census.

## Accessing the Data

The intrinsic `Manifold` is one way to access the data in the database. It may be more convenient to iterate over the database object returned by `ManifoldDatabase`. The following examples show how this may be done.

### `Example: manifolds (ex-f8e221)`

We extract a record from the database.

```magma
> D := ManifoldDatabase();
> r := Manifold(D, 100);
> r`Name;
m019(1,4)
> r`Homology;
[ 2, 31 ]
> r`Group;
Finitely presented group on 2 generators
Relations
  $.1 * $.2^3 * $.1 * $.2 * $.1^4 * $.2 * $.1 * $.2 * $.1^4
    * $.2 = Id($)
  $.1 * $.2 * $.1 * $.2^2 * $.1^-3 * $.2^2 = Id($)
> r`GoodCoverImage;
[
  (1, 2, 4, 6, 5, 8, 7, 9, 3),
  (1, 3, 5, 4, 7, 6, 9, 8, 2)
]

```

In [[Dunfield and Thurston, 2003](../../references.md#cite-virtualhaken)], Dunfield and Thurston note that they found 132 manifolds with positive Betti number. We find them in the database as those records where the `Degree` is 1. We then search the database for one of these, but by name. Both searches use the facility to iterate over the database that was mentioned above.

```magma
> D := ManifoldDatabase();
> pos_betti := {r`Name:r in D|r`Degree eq 1};
> #pos_betti;
132
> Random(pos_betti);
s527(-5,1)
> exists(r){r:r in D|r`Name eq "s527(-5,1)"};
true
> F := r`Group; F;
Finitely presented group F on 2 generators
Relations
  F.1^2 * F.2^2 * F.1^2 * F.2^-1 * F.1^2 * F.2^2 * F.1^2 *
  F.2^2 * F.1^-1 * F.2^2 = Id(F)
  F.1^2 * F.2^2 * F.1^2 * F.2 * F.1^2 * F.2^2 * F.1^2 * F.2
  * F.1^2 * F.2^2 * F.1^2 * F.2 * F.1^2 * F.2^2 * F.1^2 *
  F.2 * F.1^2 * F.2^2 * F.1^2 * F.2 * F.1^2 * F.2^2 * F.1^2
  * F.2^2 * F.1^-3 * F.2^2 = Id(F)
> AbelianQuotientInvariants(F);
[ 7, 0 ]
> r`Homology;
[ 0, 7 ]

```

As expected, we see that the fundamental group has infinite abelianization.
