


Let
K:S^{1}>R^{3}
be a tame knot. Let TK be a solid tubular neighbourhood of the knot,
the neighbourhood being small enough to have the homotopy type of a
circle. Let M_{K} denote the closure of the complement R^{3}\TK . Then M_{K}
is a 3manifold. By a theorem of Waldhausen [F. Waldhausen, "On
irreducible 3manifolds which are sufficiently large", Annals of
Mathematics. Second Series 87 (1968), 56–88] the
homeomorphism type of M_{K} is completely determined by
the canonical inclusion of fundamental groups π_{1}(δM_{K})
>
π_{1}(M_{K}) where δM_{K }denotes the
boundary of M_{K} . This homomorphism is an example of a peripheral system. By a theorem of
Gordon
and Luecke [C. Gordon and J. Luecke, "Knots are determined by their
Complements", J. Amer. Math. Soc., 2 (1989), 371–415]
the homeomorphism type of M_{K} completely determines the
ambient isotopy type of the knot K. As a means of illustrating some HAP functions for computing with topological manifolds we shall compute the homomorphism π_{1}(δM_{K}) > π_{1}(M_{K}) for the T.thermophilus 1V2X protein knot illustrated on the previous page. 

The
following commands first read the protein knot as a pure permutahedrall
complex from a pdb
file . 

gap>
K:=ReadPDBfileAsPurePermutahedralComplex("1V2X.pdb"); Reading chain containing 191 atoms. Pure permutahedral complex of dimension 3. 

The
advantage of working with pure permutahedral complexes is that they are
always topological manifolds. (This is not the case for pure cubical
complexes.) The following commands compute a pure permutahedral complex M homeomorphic to the manifold M_{K}. The complex M is a union of 4433 3dimensional permutahedra. 

gap>
K:=ZigZagContractedPureComplex(K); Pure permutahedral complex of dimension 3. gap> K:=PurePermutahedralComplex(FrameArray(K!.binaryArray)); Pure permutahedral complex of dimension 3. gap> M:=ComplementOfPureComplex(K); Pure permutahedral complex of dimension 3. gap> M:=ZigZagContractedPureComplex(M); Pure permutahedral complex of dimension 3. gap> Size(M); 4433 

The
next command converts M to a homeomorphic regular CWcomplex Y with the
same cellular structure as M. 

gap>
Y:=PermutahedralComplexToRegularCWComplex(M); Regular CWcomplex of dimension 3 

(The
next
commands
are
not
needed
for the computation of the homomorphism π_{1}(δM_{K})
>
π_{1}(M_{K}) . They produce a regular CWcomplex W
which is
homeomorphic to Y but has fewer cells than Y. The manifold Y has a 4433
3dimensional cells. The manifold W has just 32 cells of dimension 3. 

gap>
Y!.nrCells(3); 4433 gap> W:=SimplifiedRegularCWComplex(Y); Regular CWcomplex of dimension 3 gap> W!.nrCells(3); 32 gap># ) 

We
now compute the boundary B of Y. This boundary will have two path
components: one will be a surface homeomorphic to a torus, the other
will be homeomorphic to a 2sphere. By computing the fundamental groups of B based at two different 0cells we observe that the 0cell numbered 35296 lies in the torus. 

gap>
B:=BoundaryOfPureComplex(Y); Regular CWcomplex of dimension 2 gap> CriticalCellsOfRegularCWComplex(B); [ [ 2, 1 ], [ 2, 1089 ], [ 1, 3575 ], [ 1, 58055 ], [ 0, 29938 ], [ 0, 35296 ] ] gap> F:=FundamentalGroup(f,29938); [ <identity ...> ] > [ <identity ...> ] gap> F:=FundamentalGroup(f,35296); [ f1, f2 ] > [ f1^1*f2^3*f1, f2^1 ] 

The
next commands compute a finite presentation for π_{1}Y . 

gap>
pi:=FundamentalGroup(Y); <fp group of size infinity on the generators [ f1, f2 ]> gap> RelatorsOfFpGroup(pi); [ f1*f2*f1^1*f2*f1 ] 

In
summary:


