Previous About HAP: The fundamental group next

As an illustration of HAP's functions for cellular spaces we use them to obtain a presentation for the fundamental group of the complement of the Borromean rings link in Euclidean 3-space. (The method uses no specialized techniques from knot theory and can be applied to fairly arbitrary subspaces of Euclidean space.)

The function ReadLinkImageAsPureCubicalComplex("link.eps") inputs an image file containing a link diagram and tries to output the corresponding link as a 3-dimensional pure cubical complex. Ideally the link diagram should have dimensions (line thickness, under-crossing spaces etc) similar to that of the Borromean rings diagram above. The function does not always succeed: it applies several checks, and if one of these checks fails then the function returns "fail".

The following commands succeed in using the above image to realize the the Borromean rings as a pure cubical complex with 33654 3-dimensional cubes.
Pure cubical complex of dimension 3.

gap> Size(L);
33654
The following commands confirm that L has the correct homology.
gap> Homology(L,0);
[ 0, 0, 0 ]

gap> Homology(L,1);
[ 0, 0, 0 ]

gap> Homology(L,2);
[  ]
The following commands produce a 3-dimensional pure cubical complex C that is homotopy equivalent to the complement of the Borromean rings in Euclidean 3-space. The complex C involves 116123 3-dimensional cubes.
gap> C:=ComplementOfPureCubicalComplex(L);
Pure cubical complex of dimension 3.

gap> C:=ZigZagContractedPureCubicalComplex(C);
Pure cubical complex of dimension 3.

gap> Size(C);
116123
The next commands convert C to a regular CW-space Y involving a total of 1447707 cells of dimension 0,1,2 and 3. The CW-structure on Y is precisely that of the pure cubical complex C.
gap> Y:=CubicalComplexToRegularCWSpace(C);
Regular CW-space of dimension 3

gap> Size(Y);
1447707
Next we construct a discrete vector field on Y which has just 9 critical cells, three in dimension 2, four in dimension 1, and two zero cells.
gap> CriticalCellsOfRegularCWSpace(Y);
[ [ 2, 334 ], [ 2, 115000 ], [ 2, 139630 ], [ 1, 386713 ], [ 1, 404957 ],
[ 1, 405056 ], [ 1, 600331 ], [ 0, 164802 ], [ 0, 241782 ] ]
Discrete Morse Theory tells us that there exists a CW-space W that is homotopy equivalent to Y (and C) and that has just three 2-cells, four 1-cells and two 0-cells. The space W can be used to find a presentation of the fundamental group of Y and to determine the homology of Y.

The following commands use W to confirm that the link complement Y has the correct integral homology.
gap> Homology(Y,0);
[ 0 ]
gap> Homology(Y,1);
[ 0, 0, 0 ]
gap> Homology(Y,2);
[ 0, 0, 0 ]
The following commands use W to determine a presentation for the fundamental group of the link complement Y.
gap>  F:=FundamentalGroup(Y);
<fp group on the generators [ f1, f2, f3 ]>

gap> RelatorsOfFpGroup(simplifiedF);
[ f3^-1*f2^-1*f3*f1^-1*f2*f3*f2^-1*f3^-1*f1*f2,
f2^-1*f3^-1*f1*f3*f1^-1*f2*f1*f3^-1*f1^-1*f3 ]
Note that the abelianization Fab  is free abelian of rank 3. This is consistent with the isomorphism H1(Y,Z) = H1(F,Z).
The fundamental group F can be used to compute some link invariants. For instance, we can compute the degree 3 integral homology of its class 2 nilpotent quotient G:=F/[[F,F],F] .
gap> G:=NilpotentQuotient(F,3);;

gap> GroupHomology(G,3);
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
The following commands compute the same homological invariant for the following link

and, as the value of the invariant is different in this case, the computations prove that the Borromean rings are not ambient isotopic to this second link.