


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 3space. (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 3dimensional pure cubical complex. Ideally the
link diagram should have dimensions (line thickness, undercrossing
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 3dimensional cubes. 

gap>
L:=ReadLinkImageAsPureCubicalComplex("borromeanrings.jpg"); 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 3dimensional pure cubical complex C that
is homotopy equivalent to the complement of the Borromean rings in
Euclidean 3space. The complex C involves 116123 3dimensional 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 CWspace Y involving a total of
1447707 cells of dimension 0,1,2 and 3. The CWstructure on Y is
precisely that of the pure cubical complex C. 

gap>
Y:=CubicalComplexToRegularCWSpace(C); Regular CWspace 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 CWspace W that is homotopy
equivalent to Y (and C) and that has just three 2cells, four 1cells
and two 0cells. 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 F_{ab} is free abelian of rank 3.
This is consistent with the isomorphism H_{1}(Y,Z) = H_{1}(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. 

gap>
L:=ReadLinkImageAsPureCubicalComplex("link.jpg");; gap> C:=ComplementOfPureCubicalComplex(L);; gap> C:=ZigZagContractedPureCubicalComplex(C);; gap> Y:=CubicalComplexToRegularCWSpace(C);; gap> F:=FundamentalGroup(Y); gap> G:=NilpotentQuotient(F,3);; gap> GroupHomology(G,3); [ 0, 0, 0, 0, 0, 0 ] 

