<Chapter><Heading>Basic functionality for cellular complexes, fundamental groups and homology</Heading> This page covers the functions used in chapters 1 and 2 of the book <URL><Link>https://global.oup.com/academic/product/an-invitation-to-computational-homotopy-9780198832980</Link><LinkText>An Invitation to Computational Homotopy</LinkText></URL>. <Section><Heading> Data <M>\longrightarrow</M> Cellular Complexes </Heading> 
<ManSection> <Func Name="RegularCWPolytope" Arg="L"/> <Func Name="RegularCWPolytope" Arg="G,v"/> <Description><P/> <P/> Inputs a list <M>L</M> of vectors in <M>\mathbb R^n</M> and outputs their convex hull as a regular CW-complex. <P/> Inputs a permutation group G of degree <M>d</M> and vector <M>v\in \mathbb R^d</M>, and outputs the convex hull of the orbit <M>\{v^g : g\in G\}</M> as a regular CW-complex. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="CubicalComplex" Arg="A"/> <Description><P/> <P/> Inputs a binary array <M>A</M> and returns the cubical complex represented by <M>A</M>. The array <M>A</M> must of course be such that it represents a cubical complex. <P/><B>Examples:</B> <URL><Link>../tutorial/chap2.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>12</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PureCubicalComplex" Arg="A"/> <Description><P/> <P/> Inputs a binary array <M>A</M> and returns the pure cubical complex represented by <M>A</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap2.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>12</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PureCubicalKnot" Arg="n,k"/> <Func Name="PureCubicalKnot" Arg="L"/> <Description><P/> <P/> Inputs integers <M>n, k</M> and returns the <M>k</M>-th prime knot on <M>n</M> crossings as a pure cubical complex (if this prime knot exists). <P/> Inputs a list <M>L</M> describing an arc presentation for a knot or link and returns the knot or link as a pure cubical complex. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap6.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles2.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnotsQuandles.html</Link><LinkText>11</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PurePermutahedralKnot" Arg="n,k"/> <Func Name="PurePermutahedralKnot" Arg="L"/> <Description> <P/> Inputs integers <M>n, k</M> and returns the <M>k</M>-th prime knot on <M>n</M> crossings as a pure permutahedral complex (if this prime knot exists). <P/> Inputs a list <M>L</M> describing an arc presentation for a knot or link and returns the knot or link as a pure permutahedral complex. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PurePermutahedralComplex" Arg="A"/> <Description><P/> <P/> Inputs a binary array <M>A</M> and returns the pure permutahedral complex represented by <M>A</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap2.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPeripheral.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="CayleyGraphOfGroup" Arg="G,L"/> <Description><P/> <P/> Inputs a finite group <M>G</M> and a list <M>L</M> of elements in <M>G</M>.It returns the Cayley graph of the group generated by <M>L</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="EquivariantEuclideanSpace" Arg="G,v"/> <Description><P/> <P/> Inputs a crystallographic group <M>G</M> with left action on <M>\mathbb R^n</M> together with a row vector <M>v \in \mathbb R^n</M>. It returns an equivariant regular CW-space corresponding to the Dirichlet-Voronoi tessellation of <M>\mathbb R^n</M> produced from the orbit of <M>v</M> under the action. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="EquivariantOrbitPolytope" Arg="G,v"/> <Description><P/> <P/> Inputs a permutation group <M>G</M> of degree <M>n</M> together with a row vector <M>v \in \mathbb R^n</M>. It returns, as an equivariant regular CW-space, the convex hull of the orbit of <M>v</M> under the canonical left action of <M>G</M> on <M>\mathbb R^n</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="EquivariantTwoComplex" Arg="G"/> <Description><P/> <P/> Inputs a suitable group <M>G</M> and returns, as an equivariant regular CW-space, the <M>2</M>-complex associated to some presentation of <M>G</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="QuillenComplex" Arg="G,p"/> <Description><P/> <P/> Inputs a finite group <M>G</M> and prime <M>p</M>, and returns the simplicial complex arising as the order complex of the poset of elementary abelian <M>p</M>-subgroups of <M>G</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutBredon.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="RestrictedEquivariantCWComplex" Arg="Y,H"/> <Description><P/> <P/> Inputs a <M>G</M>-equivariant regular CW-space Y and a subgroup <M>H \le G</M> for which GAP can find a transversal. It returns the equivariant regular CW-complex obtained by retricting the action to <M>H</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="RandomSimplicialGraph" Arg="n,p"/> <Description><P/> <P/> Inputs an integer <M> n \ge 1 </M> and positive prime <M>p</M>, and returns an Erdős–Rényi random graph as a <M>1</M>-dimensional simplicial complex. The graph has <M>n</M> vertices. Each pair of vertices is, with probability <M>p</M>, directly connected by an edge. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="RandomSimplicialTwoComplex" Arg="n,p"/> <Description><P/> <P/> Inputs an integer <M> n \ge 1 </M> and positive prime <M>p</M>, and returns a Linial-Meshulam random simplicial <M>2</M>-complex. The <M>1</M>-skeleton of this simplicial complex is the complete graph on <M>n</M> vertices. Each triple of vertices lies, with probability <M>p</M>, in a common <M>2</M>-simplex of the complex. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ReadCSVfileAsPureCubicalKnot" Arg="str"/> <Func Name="ReadCSVfileAsPureCubicalKnot" Arg="str,r"/> <Func Name="ReadCSVfileAsPureCubicalKnot" Arg="L"/> <Func Name="ReadCSVfileAsPureCubicalKnot" Arg="L,R"/> <Description><P/> <P/> Reads a CSV file identified by a string str such as "file.pdb" or "path/file.pdb" and returns a <M>3</M>-dimensional pure cubical complex <M>K</M>. Each line of the file should contain the coordinates of a point in <M>\mathbb R^3</M> and the complex <M>K</M> should represent a knot determined by the sequence of points, though the latter is not guaranteed. A useful check in this direction is to test that <M>K</M> has the homotopy type of a circle. <P/>If the test fails then try the function again with an integer <M>r \ge 2</M> entered as the optional second argument. The integer determines the resolution with which the knot is constructed. <P/> The function can also read in a list <M>L</M> of strings identifying CSV files for several knots. In this case a list <M>R</M> of integer resolutions can also be entered. The lists <M>L</M> and <M>R</M> must be of equal length. <P/><B>Examples:</B> <URL><Link>../tutorial/chap2.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ReadImageAsPureCubicalComplex" Arg="str,t"/> <Description><P/> <P/> Reads an image file identified by a string str such as "file.bmp", "file.eps", "file.jpg", "path/file.png" etc., together with an integer <M>t</M> between <M>0</M> and <M>765</M>. It returns a <M>2</M>-dimensional pure cubical complex corresponding to a black/white version of the image determined by the threshold <M>t</M>. The <M>2</M>-cells of the pure cubical complex correspond to pixels with RGB value <M>R+G+B \le t</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>5</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ReadImageAsFilteredPureCubicalComplex" Arg="str,n"/> <Description><P/> <P/> Reads an image file identified by a string str such as "file.bmp", "file.eps", "file.jpg", "path/file.png" etc., together with a positive integer <M>n</M>. It returns a <M>2</M>-dimensional filtered pure cubical complex of filtration length <M>n</M>. The <M>k</M>th term in the filtration is a pure cubical complex corresponding to a black/white version of the image determined by the threshold <M>t_k=k \times 765/n </M>. The <M>2</M>-cells of the <M>k</M>th term correspond to pixels with RGB value <M>R+G+B \le t_k</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ReadImageAsWeightFunction" Arg="str,t"/> <Description><P/> <P/> Reads an image file identified by a string str such as "file.bmp", "file.eps", "file.jpg", "path/file.png" etc., together with an integer <M>t</M>. It constructs a <M>2</M>-dimensional regular CW-complex <M>Y</M> from the image, together with a weight function <M>w\colon Y\rightarrow \mathbb Z</M> corresponding to a filtration on <M>Y</M> of filtration length <M>t</M>. The pair <M>[Y,w]</M> is returned. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ReadPDBfileAsPureCubicalComplex" Arg="str"/> <Func Name="ReadPDBfileAsPureCubicalComplex" Arg="str,r"/> <Description><P/> <P/> Reads a PDB (Protein Database) file identified by a string str such as "file.pdb" or "path/file.pdb" and returns a <M>3</M>-dimensional pure cubical complex <M>K</M>. The complex <M>K</M> should represent a (protein backbone) knot but this is not guaranteed. A useful check in this direction is to test that <M>K</M> has the homotopy type of a circle. <P/>If the test fails then try the function again with an integer <M>r \ge 2</M> entered as the optional second argument. The integer determines the resolution with which the knot is constructed. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Var Name="ReadPDBfileAsPurepermutahedralComplex"/> <Func Name="ReadPDBfileAsPurePermutahedralComplex" Arg="str,r"/> <Description><P/> <P/> Reads a PDB (Protein Database) file identified by a string str such as "file.pdb" or "path/file.pdb" and returns a <M>3</M>-dimensional pure permutahedral complex <M>K</M>. The complex <M>K</M> should represent a (protein backbone) knot but this is not guaranteed. A useful check in this direction is to test that <M>K</M> has the homotopy type of a circle. <P/>If the test fails then try the function again with an integer <M>r \ge 2</M> entered as the optional second argument. The integer determines the resolution with which the knot is constructed. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="RegularCWPolytope" Arg="L"/> <Func Name="RegularCWPolytope" Arg="G,v"/> <Description><P/> <P/> Inputs a list <M>L</M> of vectors in <M>\mathbb R^n</M> and outputs their convex hull as a regular CW-complex. <P/> Inputs a permutation group G of degree <M>d</M> and vector <M>v\in \mathbb R^d</M>, and outputs the convex hull of the orbit <M>\{v^g : g\in G\}</M> as a regular CW-complex. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="SimplicialComplex" Arg="L"/> <Description><P/> <P/>Inputs a list <M>L</M> whose entries are lists of vertices representing the maximal simplices of a simplicial complex, and returns the simplicial complex. Here a "vertex" is a GAP object such as an integer or a subgroup. The list <M>L</M> can also contain non-maximal simplices. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>12</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="SymmetricMatrixToFilteredGraph" Arg="A,m,s"/> <Func Name="SymmetricMatrixToFilteredGraph" Arg="A,m"/> <Description><P/> <P/>Inputs an <M>n \times n</M> symmetric matrix <M>A</M>, a positive integer <M>m</M> and a positive rational <M>s</M>. The function returns a filtered graph of filtration length <M>m</M>. The <M>t</M>-th term of the filtration is a graph with <M>n</M> vertices and an edge between the <M>i</M>-th and <M>j</M>-th vertices if the <M>(i,j)</M> entry of <M>A</M> is less than or equal to <M>t \times s/m</M>. <P/> If the optional input <M>s</M> is omitted then it is set equal to the largest entry in the matrix <M>A</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="SymmetricMatrixToGraph" Arg="A,t"/> <Description><P/> <P/> Inputs an <M>n\times n</M> symmetric matrix <M>A</M> over the rationals and a rational number <M>t \ge 0</M>, and returns the graph on the vertices <M>1,2, \ldots, n</M> with an edge between distinct vertices <M>i</M> and <M>j</M> precisely when the <M>(i,j)</M> entry of <M>A</M> is <M>\le t</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> Metric Spaces</Heading> 
<ManSection> <Func Name="CayleyMetric" Arg="g,h"/> <Description><P/> <P/> Inputs two permutations <M>g,h</M> and optionally the degree <M>N</M> of a symmetric group containing them. It returns the minimum number of transpositions needed to express <M>g*h^{-1}</M> as a product of transpositions. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Var Name="EuclideanMetric"/> <Description><P/> <P/> Inputs two vectors <M>v,w \in \mathbb R^n</M> and returns a rational number approximating the Euclidean distance between them. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="EuclideanSquaredMetric" Arg="g,h"/> <Description><P/> <P/> Inputs two vectors <M>v,w \in \mathbb R^n</M> and returns the square of the Euclidean distance between them. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="HammingMetric" Arg="g,h"/> <Description><P/> <P/> Inputs two permutations <M>g,h</M> and optionally the degree <M>N</M> of a symmetric group containing them. It returns the minimum number of integers moved by the permutation <M>g*h^{-1}</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="KendallMetric" Arg="g,h"/> <Description><P/> <P/> Inputs two permutations <M>g,h</M> and optionally the degree <M>N</M> of a symmetric group containing them. It returns the minimum number of adjacent transpositions needed to express <M>g*h^{-1}</M> as a product of adjacent transpositions. An <E>adjacent</E> transposition is of the form <M>(i,i+1)</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ManhattanMetric" Arg="g,h"/> <Description><P/> <P/> Inputs two vectors <M>v,w \in \mathbb R^n</M> and returns the Manhattan distance between them. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="VectorsToSymmetricMatrix" Arg="V"/> <Func Name="VectorsToSymmetricMatrix" Arg="V,d"/> <Description><P/> <P/> Inputs a list <M>V =\{ v_1, \ldots, v_k\} \in \mathbb R^n</M> and returns the <M>k \times k</M> symmetric matrix of Euclidean distances <M>d(v_i, v_j)</M>. When these distances are irrational they are approximated by a rational number. <P/> As an optional second argument any rational valued function <M>d(x,y)</M> can be entered. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> Cellular Complexes <M>\longrightarrow</M> Cellular Complexes</Heading> 
<ManSection> <Func Name="BoundaryMap" Arg="K"/> <Description><P/> <P/> Inputs a pure regular CW-complex <M>K</M> and returns the regular CW-inclusion map <M>\iota \colon \partial K \hookrightarrow K</M> from the boundary <M>\partial K</M> into the complex <M>K</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap2.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTopology.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="CliqueComplex" Arg="G,n"/> <Func Name="CliqueComplex" Arg="F,n"/> <Func Name="CliqueComplex" Arg="K,n"/> <Description><P/> <P/> Inputs a graph <M>G</M> and integer <M>n \ge 1</M>. It returns the <M>n</M>-skeleton of a simplicial complex <M>K</M> with one <M>k</M>-simplex for each complete subgraph of <M>G</M> on <M>k+1</M> vertices. <P/> Inputs a fitered graph <M>F</M> and integer <M>n \ge 1</M>. It returns the <M>n</M>-skeleton of a filtered simplicial complex <M>K</M> whose <M>t</M>-term has one <M>k</M>-simplex for each complete subgraph of the <M>t</M>-th term of <M>G</M> on <M>k+1</M> vertices. <P/> Inputs a simplicial complex of dimension <M>d=1</M> or <M>d=2</M>. If <M>d=1</M> then the clique complex of a graph returned. If <M>d=2</M> then the clique complex of a <M>2</M>-complex is returned. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ConcentricFiltration" Arg="K,n"/> <Description><P/> <P/> Inputs a pure cubical complex <M>K</M> and integer <M>n \ge 1</M>, and returns a filtered pure cubical complex of filtration length <M>n</M>. The <M>t</M>-th term of the filtration is the intersection of <M>K</M> with the ball of radius <M>r_t</M> centred on the centre of gravity of <M>K</M>, where <M>0=r_1 \le r_2 \le r_3 \le \cdots \le r_n</M> are equally spaced rational numbers. The complex <M>K</M> is contained in the ball of radius <M>r_n</M>. (At present, this is implemented only for <M>2</M>- and <M>3</M>-dimensional complexes.) <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="DirectProduct" Arg="M,N"/> <Func Name="DirectProduct" Arg="M,N"/> <Description><P/> <P/> Inputs two or more regular CW-complexes or two or more pure cubical complexes and returns their direct product. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>7</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="FiltrationTerm" Arg="K,t"/> <Func Name="FiltrationTerm" Arg="K,t"/> <Description> <P/> <P/> Inputs a filtered regular CW-complex or a filtered pure cubical complex <M>K</M> together with an integer <M>t \ge 1</M>. The <M>t</M>-th term of the filtration is returned. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Graph" Arg="K"/> <Func Name="Graph" Arg="K"/> <Description><P/> <P/> Inputs a regular CW-complex or a simplicial complex <M>K</M> and returns its <M>1</M>-skeleton as a graph. <P/><B>Examples:</B> <URL><Link>../tutorial/chap2.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGraphsOfGroups.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTopology.html</Link><LinkText>12</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTwistedCoefficients.html</Link><LinkText>13</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="HomotopyGraph" Arg="Y"/> <Description><P/> <P/> Inputs a regular CW-complex <M>Y</M> and returns a subgraph <M>M \subset Y^1</M> of the <M>1</M>-skeleton for which the induced homology homomorphisms <M>H_1(M,\mathbb Z) \rightarrow H_1(Y,\mathbb Z)</M> and <M>H_1(Y^1,\mathbb Z) \rightarrow H_1(Y,\mathbb Z)</M> have identical images. The construction tries to include as few edges in <M>M</M> as possible, though a minimum is not guaranteed. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Nerve" Arg="M"/> <Func Name="Nerve" Arg="M"/> <Func Name="Nerve" Arg="M,n"/> <Func Name="Nerve" Arg="M,n"/> <Description><P/> <P/>Inputs a pure cubical complex or pure permutahedral complex <M>M</M> and returns the simplicial complex <M>K</M> obtained by taking the nerve of an open cover of <M>|M|</M>, the open sets in the cover being sufficiently small neighbourhoods of the top-dimensional cells of <M>|M|</M>. The spaces <M>|M|</M> and <M>|K|</M> are homotopy equivalent by the Nerve Theorem. If an integer <M>n \ge 0</M> is supplied as the second argument then only the n-skeleton of <M>K</M> is returned. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSimplicialGroups.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>8</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="RegularCWComplex" Arg="K"/> <Func Name="RegularCWComplex" Arg="K"/> <Func Name="RegularCWComplex" Arg="K"/> <Func Name="RegularCWComplex" Arg="K"/> <Func Name="RegularCWComplex" Arg="L"/> <Func Name="RegularCWComplex" Arg="L,M"/> <Description><P/> <P/>Inputs a simplicial, pure cubical, cubical or pure permutahedral complex <M>K</M> and returns the corresponding regular CW-complex. Inputs a list <M>L=Y!.boundaries</M> of boundary incidences of a regular CW-complex <M>Y</M> and returns <M>Y</M>. Inputs a list <M>L=Y!.boundaries</M> of boundary incidences of a regular CW-complex <M>Y</M> together with a list <M>M=Y!.orientation</M> of incidence numbers and returns a regular CW-complex <M>Y</M>. The availability of precomputed incidence numbers saves recalculating them. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPeripheral.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>12</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="RegularCWMap" Arg="M,A"/> <Description><P/> <P/> Inputs a pure cubical complex <M>M</M> and a subcomplex <M>A</M> and returns the inclusion map <M>A \rightarrow M</M> as a map of regular CW complexes. <P/><B>Examples:</B> <URL><Link>../tutorial/chap4.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ThickeningFiltration" Arg="K,n"/> <Func Name="ThickeningFiltration" Arg="K,n,s"/> <Description><P/> <P/> Inputs a pure cubical complex <M>K</M> and integer <M>n \ge 1</M>, and returns a filtered pure cubical complex of filtration length <M>n</M>. The <M>t</M>-th term of the filtration is the <M>t</M>-fold thickening of <M>K</M>. If an integer <M>s \ge 1</M> is entered as the optional third argument then the <M>t</M>-th term of the filtration is the <M>ts</M>-fold thickening of <M>K</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> Cellular Complexes <M>\longrightarrow</M> Cellular Complexes (Preserving Data Types)</Heading> 
<ManSection> <Func Name="ContractedComplex" Arg="K"/> <Func Name="ContractedComplex" Arg="K"/> <Func Name="ContractedComplex" Arg="K"/> <Func Name="ContractedComplex" Arg="K"/> <Func Name="ContractedComplex" Arg="K,S"/> <Func Name="ContractedComplex" Arg="K"/> <Func Name="ContractedComplex" Arg="K"/> <Func Name="ContractedComplex" Arg="K,S"/> <Func Name="ContractedComplex" Arg="K"/> <Func Name="ContractedComplex" Arg="G"/> <Description> <P/> Inputs a complex (regular CW, Filtered regular CW, pure cubical etc.) and returns a homotopy equivalent subcomplex. <P/> Inputs a pure cubical complex or pure permutahedral complex <M>K</M> and a subcomplex <M>S</M>. It returns a homotopy equivalent subcomplex of <M>K</M> that contains <M>S</M>. <P/> Inputs a graph <M>G</M> and returns a subgraph <M>S</M> such that the clique complexes of <M>G</M> and <M>S</M> are homotopy equivalent. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>11</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ContractibleSubcomplex" Arg="K"/> <Func Name="ContractibleSubcomplex" Arg="K"/> <Func Name="ContractibleSubcomplex" Arg="K"/> <Description><P/> <P/> Inputs a non-empty pure cubical, pure permutahedral or simplicial complex <M>K</M> and returns a contractible subcomplex. <P/><B>Examples:</B> <URL><Link>../tutorial/chap10.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="KnotReflection" Arg="K"/> <Description><P/> <P/> Inputs a pure cubical knot and returns the reflected knot. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="KnotSum" Arg="K,L"/> <Description><P/> <P/> Inputs two pure cubical knots and returns their sum. <P/><B>Examples:</B> <URL><Link>../tutorial/chap2.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap6.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>5</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="OrientRegularCWComplex" Arg="Y"/> <Description><P/> <P/> Inputs a regular CW-complex <M>Y</M> and computes and stores incidence numbers for <M>Y</M>. If <M>Y</M> already has incidence numbers then the function does nothing. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="PathComponent" Arg="K,n"/> <Func Name="PathComponent" Arg="K,n"/> <Func Name="PathComponent" Arg="K,n"/> <Description><P/> <P/>Inputs a simplicial, pure cubical or pure permutahedral complex <M>K</M> together with an integer <M>1 \le n \le \beta_0(K)</M>. The <M>n</M>-th path component of <M>K</M> is returned. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PureComplexBoundary" Arg="M"/> <Func Name="PureComplexBoundary" Arg="M"/> <Description><P/> <P/> Inputs a <M>d</M>-dimensional pure cubical or pure permutahedral complex <M>M</M> and returns a <M>d</M>-dimensional complex consisting of the closure of those <M>d</M>-cells whose boundaries contains some cell with coboundary of size less than the maximal possible size. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PureComplexComplement" Arg="M"/> <Func Name="PureComplexComplement" Arg="M"/> <Description><P/> <P/> Inputs a pure cubical complex or a pure permutahedral complex and returns its complement. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>7</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PureComplexDifference" Arg="M,N"/> <Func Name="PureComplexDifference" Arg="M,N"/> <Description><P/> <P/> Inputs two pure cubical complexes or two pure permutahedral complexes and returns the difference <M> M - N</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Var Name="PureComplexInterstection"/> <Func Name="PureComplexIntersection" Arg="M,N"/> <Description><P/> <P/> Inputs two pure cubical complexes or two pure permutahedral complexes and returns their intersection. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="PureComplexThickened" Arg="M"/> <Func Name="PureComplexThickened" Arg="M"/> <Description><P/> <P/> Inputs a pure cubical complex or a pure permutahedral complex and returns the a thickened complex. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PureComplexUnion" Arg="M,N"/> <Func Name="PureComplexUnion" Arg="M,N"/> <Description><P/> <P/> Inputs two pure cubical complexes or two pure permutahedral complexes and returns their union. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="SimplifiedComplex" Arg="K"/> <Func Name="SimplifiedComplex" Arg="K"/> <Func Name="SimplifiedComplex" Arg="R"/> <Func Name="SimplifiedComplex" Arg="C"/> <Description><P/> <P/> Inputs a regular CW-complex or a pure permutahedral complex <M>K</M> and returns a homeomorphic complex with possibly fewer cells and certainly no more cells. <P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> of <M>\mathbb Z</M> and returns a <M>\mathbb ZG</M>-resolution <M>S</M> with potentially fewer free generators. <P/> Inputs a chain complex <M>C</M> of free abelian groups and returns a chain homotopic chain complex <M>D</M> with potentially fewer free generators. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>6</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ZigZagContractedComplex" Arg="K"/> <Func Name="ZigZagContractedComplex" Arg="K"/> <Func Name="ZigZagContractedComplex" Arg="K"/> <Description> <P/> Inputs a pure cubical, filtered pure cubical or pure permutahedral complex and returns a homotopy equivalent complex. In the filtered case, the <M>t</M>-th term of the output is homotopy equivalent to the <M>t</M>-th term of the input for all <M>t</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap2.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> Cellular Complexes <M>\longrightarrow</M> Homotopy Invariants</Heading> 
<ManSection> <Func Name="AlexanderPolynomial" Arg="K"/> <Func Name="AlexanderPolynomial" Arg="K"/> <Func Name="AlexanderPolynomial" Arg="G"/> <Description><P/> <P/> Inputs a <M>3</M>-dimensional pure cubical or pure permutahdral complex <M>K</M> representing a knot and returns the Alexander polynomial of the fundamental group <M>G = \pi_1(\mathbb R^3\setminus K)</M>. <P/> Inputs a finitely presented group <M>G</M> with infinite cyclic abelianization and returns its Alexander polynomial. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="BettiNumber" Arg="K,n"/> <Func Name="BettiNumber" Arg="K,n"/> <Func Name="BettiNumber" Arg="K,n"/> <Func Name="BettiNumber" Arg="K,n"/> <Func Name="BettiNumber" Arg="K,n"/> <Func Name="BettiNumber" Arg="K,n"/> <Func Name="BettiNumber" Arg="K,n"/> <Func Name="BettiNumber" Arg="K,n,p"/> <Func Name="BettiNumber" Arg="K,n,p"/> <Func Name="BettiNumber" Arg="K,n,p"/> <Func Name="BettiNumber" Arg="K,n,p"/> <Func Name="BettiNumber" Arg="K,n,p"/> <Description> <P/>Inputs a simplicial, cubical, pure cubical, pure permutahedral, regular CW, chain or sparse chain complex <M>K</M> together with an integer <M>n \ge 0</M> and returns the <M>n</M>th Betti number of <M>K</M>. <P/>Inputs a simplicial, cubical, pure cubical, pure permutahedral or regular CW-complex <M>K</M> together with an integer <M>n \ge 0</M> and a prime <M>p \ge 0</M> or <M>p=0</M>. In this case the <M>n</M>th Betti number of <M>K</M> over a field of characteristic <M>p</M> is returned. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="EulerCharacteristic" Arg="C"/> <Func Name="EulerCharacteristic" Arg="K"/> <Func Name="EulerCharacteristic" Arg="K"/> <Func Name="EulerCharacteristic" Arg="K"/> <Func Name="EulerCharacteristic" Arg="K"/> <Func Name="EulerCharacteristic" Arg="K"/> <Description><P/> <P/> Inputs a chain complex <M>C</M> and returns its Euler characteristic. <P/> Inputs a cubical, or pure cubical, or pure permutahedral or regular CW-, or simplicial complex <M>K</M> and returns its Euler characteristic. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="EulerIntegral" Arg="Y,w"/> <Description><P/> <P/> Inputs a regular CW-complex <M>Y</M> and a weight function <M>w\colon Y\rightarrow \mathbb Z</M>, and returns the Euler integral <M> \int_Y w\, d\chi </M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="FundamentalGroup" Arg="K"/> <Func Name="FundamentalGroup" Arg="K,n"/> <Func Name="FundamentalGroup" Arg="K"/> <Func Name="FundamentalGroup" Arg="K"/> <Func Name="FundamentalGroup" Arg="K"/> <Func Name="FundamentalGroup" Arg="F"/> <Func Name="FundamentalGroup" Arg="F,n"/> <Description><P/> <P/> Inputs a regular CW, simplicial, pure cubical or pure permutahedral complex <M>K</M> and returns the fundamental group. <P/> Inputs a regular CW complex <M>K</M> and the number <M>n</M> of some zero cell. It returns the fundamental group of <M>K</M> based at the <M>n</M>-th zero cell. <P/> Inputs a regular CW map <M>F</M> and returns the induced homomorphism of fundamental groups. If the number of some zero cell in the domain of <M>F</M> is entered as an optional second variable then the fundamental group is based at this zero cell. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPeripheral.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>12</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>13</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="FundamentalGroupOfQuotient" Arg="Y"/> <Description><P/> <P/> Inputs a <M>G</M>-equivariant regular CW complex <M>Y</M> and returns the group <M>G</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="IsAspherical" Arg="F,R"/> <Description><P/> <P/> Inputs a free group <M>F</M> and a list <M>R</M> of words in <M>F</M>. The function attempts to test if the quotient group <M>G=F/\langle R \rangle^F</M> is aspherical. If it succeeds it returns <M>true</M>. Otherwise the test is inconclusive and <M>fail</M> is returned. <P/><B>Examples:</B> <URL><Link>../tutorial/chap3.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap6.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutAspherical.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="KnotGroup" Arg="K"/> <Func Name="KnotGroup" Arg="K"/> <Description><P/> <P/> Inputs a pure cubical or pure permutahedral complex <M>K</M> and returns the fundamental group of its complement. If the complement is path-connected then this fundamental group is unique up to isomorphism. Otherwise it will depend on the path-component in which the randomly chosen base-point lies. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PiZero" Arg="Y"/> <Func Name="PiZero" Arg="Y"/> <Func Name="PiZero" Arg="Y"/> <Description><P/> <P/> Inputs a regular CW-complex <M>Y</M>, or graph <M>Y</M>, or simplicial complex <M>Y</M> and returns a pair <M>[cells,r]</M> where: <M>cells</M> is a list of vertices of <M>Y</M> representing the distinct path-components; <M>r(v)</M> is a function which, for each vertex <M>v</M> of <M>Y</M> returns the representative vertex <M>r(v) \in cells</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PersistentBettiNumbers" Arg="K,n"/> <Func Name="PersistentBettiNumbers" Arg="K,n"/> <Func Name="PersistentBettiNumbers" Arg="K,n"/> <Func Name="PersistentBettiNumbers" Arg="K,n"/> <Func Name="PersistentBettiNumbers" Arg="K,n"/> <Func Name="PersistentBettiNumbers" Arg="K,n,p"/> <Func Name="PersistentBettiNumbers" Arg="K,n,p"/> <Func Name="PersistentBettiNumbers" Arg="K,n,p"/> <Func Name="PersistentBettiNumbers" Arg="K,n,p"/> <Func Name="PersistentBettiNumbers" Arg="K,n,p"/> <Description> <P/>Inputs a filtered simplicial, filtered pure cubical, filtered regular CW, filtered chain or filtered sparse chain complex <M>K</M> together with an integer <M>n \ge 0</M> and returns the <M>n</M>th PersistentBetti numbers of <M>K</M> as a list of lists of integers. <P/>Inputs a filtered simplicial, filtered pure cubical, filtered regular CW, filtered chain or filtered sparse chain complex <M>K</M> together with an integer <M>n \ge 0</M> and a prime <M>p \ge 0</M> or <M>p=0</M>. In this case the <M>n</M>th PersistentBetti numbers of <M>K</M> over a field of characteristic <M>p</M> are returned. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> Data <M>\longrightarrow</M> Homotopy Invariants</Heading> 
<ManSection> <Func Name="DendrogramMat" Arg="A,t,s"/> <Description><P/> <P/> Inputs an <M>n\times n</M> symmetric matrix <M>A</M> over the rationals, a rational <M>t \ge 0</M> and an integer <M>s \ge 1</M>. A list <M>[v_1, \ldots, v_{t+1}]</M> is returned with each <M>v_k</M> a list of positive integers. Let <M>t_k = (k-1)s</M>. Let <M>G(A,t_k)</M> denote the graph with vertices <M>1, \ldots, n</M> and with distinct vertices <M>i</M> and <M>j</M> connected by an edge when the <M>(i,j)</M> entry of <M>A</M> is <M>\le t_k</M>. The <M>i</M>-th path component of <M>G(A,t_k)</M> is included in the <M>v_k[i]</M>-th path component of <M>G(A,t_{k+1})</M>. This defines the integer vector <M>v_k</M>. The vector <M>v_k</M> has length equal to the number of path components of <M>G(A,t_k)</M>. <P/><B>Examples:</B> 
</Description> </ManSection> </Section> <Section><Heading> Cellular Complexes <M>\longrightarrow</M> Non Homotopy Invariants</Heading> 
<ManSection> <Func Name="ChainComplex" Arg="K"/> <Func Name="ChainComplex" Arg="K"/> <Func Name="ChainComplex" Arg="K"/> <Func Name="ChainComplex" Arg="Y"/> <Func Name="ChainComplex" Arg="K"/> <Description><P/> <P/> Inputs a cubical, or pure cubical, or pure permutahedral or simplicial complex <M>K</M> and returns its chain complex of free abelian groups. In degree <M>n</M> this chain complex has one free generator for each <M>n</M>-dimensional cell of <M>K</M>. <P/> Inputs a regular CW-complex <M>Y</M> and returns a chain complex <M>C</M> which is chain homotopy equivalent to the cellular chain complex of <M>Y</M>. In degree <M>n</M> the free abelian chain group <M>C_n</M> has one free generator for each critical <M>n</M>-dimensional cell of <M>Y</M> with respect to some discrete vector field on <M>Y</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutBredon.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSimplicialGroups.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>12</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Var Name="ChainComplexEquivalence"/> <Description><P/> <P/> Inputs a regular CW-complex <M>X</M> and returns a pair <M>[f_\ast, g_\ast]</M> of chain maps <M>f_\ast\colon C_\ast(X) \rightarrow D_\ast(X)</M>, <M>g_\ast\colon D_\ast(X) \rightarrow C_\ast(X)</M>. Here <M>C_\ast(X)</M> is the standard cellular chain complex of <M>X</M> with one free generator for each cell in <M>X</M>. The chain complex <M>D_\ast(X)</M> is a typically smaller chain complex arising from a discrete vector field on <M>X</M>. The chain maps <M>f_\ast, g_\ast</M> are chain homotopy equivalences. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ChainComplexOfQuotient" Arg="Y"/> <Description><P/> <P/> Inputs a <M>G</M>-equivariant regular CW-complex <M>Y</M> and returns the cellular chain complex of the quotient space <M>Y/G</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ChainMap" Arg="X,A,Y,B"/> <Func Name="ChainMap" Arg="f"/> <Func Name="ChainMap" Arg="f"/> <Description><P/> <P/>Inputs a pure cubical complex <M>Y</M> and pure cubical sucomplexes <M>X\subset Y</M>, <M>B\subset Y</M>,<M>A\subset B</M>. It returns the induced chain map <M>f_\ast\colon C_\ast(X/A) \rightarrow C_\ast(Y/B)</M> of cellular chain complexes of pairs. (Typlically one takes <M>A</M> and <M>B</M> to be empty or contractible subspaces, in which case <M>C_\ast(X/A) \simeq C_\ast(X)</M>, <M>C_\ast(Y/B) \simeq C_\ast(Y)</M>.) <P/> Inputs a map <M>f\colon X \rightarrow Y</M> between two regular CW-complexes <M>X,Y</M> and returns an induced chain map <M>f_\ast\colon C_\ast(X) \rightarrow C_\ast(Y)</M> where <M>C_\ast(X)</M>, <M>C_\ast(Y)</M> are chain homotopic to (but usually smaller than) the cellular chain complexes of <M>X</M>, <M>Y</M>. <P/> Inputs a map <M>f\colon X \rightarrow Y</M> between two simplicial complexes <M>X,Y</M> and returns the induced chain map <M>f_\ast\colon C_\ast(X) \rightarrow C_\ast(Y)</M> of cellular chain complexes. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCohomologyRings.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeries.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutFunctorial.html</Link><LinkText>8</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="CochainComplex" Arg="K"/> <Func Name="CochainComplex" Arg="K"/> <Func Name="CochainComplex" Arg="K"/> <Func Name="CochainComplex" Arg="Y"/> <Func Name="CochainComplex" Arg="K"/> <Description><P/> <P/> Inputs a cubical, or pure cubical, or pure permutahedral or simplicial complex <M>K</M> and returns its cochain complex of free abelian groups. In degree <M>n</M> this cochain complex has one free generator for each <M>n</M>-dimensional cell of <M>K</M>. <P/> Inputs a regular CW-complex <M>Y</M> and returns a cochain complex <M>C</M> which is chain homotopy equivalent to the cellular cochain complex of <M>Y</M>. In degree <M>n</M> the free abelian cochain group <M>C_n</M> has one free generator for each critical <M>n</M>-dimensional cell of <M>Y</M> with respect to some discrete vector field on <M>Y</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="CriticalCells" Arg="K"/> <Description><P/> <P/> Inputs a regular CW-complex <M>K</M> and returns its critical cells with respect to some discrete vector field on <M>K</M>. If no discrete vector field on <M>K</M> is available then one will be computed and stored. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPeripheral.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>8</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="DiagonalApproximation" Arg="X"/> <Description><P/> <P/> Inputs a regular CW-complex <M>X</M> and outputs a pair <M>[p,\iota]</M> of maps of CW-complexes. The map <M>p\colon X^\Delta \rightarrow X</M> will often be a homotopy equivalence. This is always the case if <M>X</M> is the CW-space of any pure cubical complex. In general, one can test to see if the induced chain map <M>p_\ast \colon C_\ast(X^\Delta) \rightarrow C_\ast(X)</M> is an isomorphism on integral homology. The second map <M>\iota \colon X^\Delta \hookrightarrow X\times X</M> is an inclusion into the direct product. If <M>p_\ast</M> induces an isomorphism on homology then the chain map <M>\iota_\ast\colon C_\ast(X^\Delta) \rightarrow C_\ast(X\times X)</M> can be used to compute the cup product. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Size" Arg="Y"/> <Func Name="Size" Arg="Y"/> <Func Name="Size" Arg="K"/> <Func Name="Size" Arg="K"/> <Description><P/> <P/>Inputs a regular CW complex or a simplicial complex <M>Y</M> and returns the number of cells in the complex. <P/>Inputs a <M>d</M>-dimensional pure cubical or pure permutahedral complex <M>K</M> and returns the number of <M>d</M>-dimensional cells in the complex. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoefficientSequence.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPeripheral.html</Link><LinkText>12</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>13</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>14</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles2.html</Link><LinkText>15</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles.html</Link><LinkText>16</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>17</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSimplicialGroups.html</Link><LinkText>18</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>19</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>20</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> (Co)chain Complexes <M>\longrightarrow </M> (Co)chain Complexes</Heading> 
<ManSection> <Func Name="FilteredTensorWithIntegers" Arg="R"/> <Description><P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> for which <M>"filteredDimension"</M> lies in <B>NamesOfComponents(R)</B>. (Such a resolution can be produced using <B>TwisterTensorProduct()</B>, <B>ResolutionNormalSubgroups()</B> or <B>FreeGResolution()</B>.) It returns the filtered chain complex obtained by tensoring with the trivial module <M>\mathbb Z</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap10.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="FilteredTensorWithIntegersModP" Arg="R,p"/> <Description><P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> for which <M>"filteredDimension"</M> lies in <B>NamesOfComponents(R)</B>, together with a prime <M>p</M>. (Such a resolution can be produced using <B>TwisterTensorProduct()</B>, <B>ResolutionNormalSubgroups()</B> or <B>FreeGResolution()</B>.) It returns the filtered chain complex obtained by tensoring with the trivial module <M>\mathbb F</M>, the field of <M>p</M> elements. <P/><B>Examples:</B> <URL><Link>../tutorial/chap10.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="HomToIntegers" Arg="C"/> <Func Name="HomToIntegers" Arg="R"/> <Func Name="HomToIntegers" Arg="F"/> <Description><P/> <P/> Inputs a chain complex <M>C</M> of free abelian groups and returns the cochain complex <M>Hom_{\mathbb Z}(C,\mathbb Z)</M>. <P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> in characteristic <M>0</M> and returns the cochain complex <M>Hom_{\mathbb ZG}(R,\mathbb Z)</M>. <P/> Inputs an equivariant chain map <M>F\colon R\rightarrow S</M> of resolutions and returns the induced cochain map <M>Hom_{\mathbb ZG}(S,\mathbb Z) \longrightarrow Hom_{\mathbb ZG}(R,\mathbb Z)</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCohomologyRings.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTorAndExt.html</Link><LinkText>7</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="TensorWithIntegersModP" Arg="C,p"/> <Func Name="TensorWithIntegersModP" Arg="R,p"/> <Func Name="TensorWithIntegersModP" Arg="F,p"/> <Description><P/> <P/> Inputs a chain complex <M>C</M> of characteristic <M>0</M> and a prime integer <M>p</M>. It returns the chain complex <M>C \otimes_{\mathbb Z} {\mathbb Z}_p</M> of characteristic <M>p</M>. <P/> Inputs a free <M>\mathbb ZG</M>-resolution <M>R</M> of characteristic <M>0</M> and a prime integer <M>p</M>. It returns the chain complex <M>R \otimes_{\mathbb ZG} {\mathbb Z}_p</M> of characteristic <M>p</M>. <P/> Inputs an equivariant chain map <M>F\colon R \rightarrow S</M> in characteristic <M>0</M> a prime integer <M>p</M>. It returns the induced chain map <M>F\otimes_{\mathbb ZG}\mathbb Z_p \colon R \otimes_{\mathbb ZG} {\mathbb Z}_p \longrightarrow S \otimes_{\mathbb ZG} {\mathbb Z}_p</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPerformance.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeries.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutDefinitions.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTorAndExt.html</Link><LinkText>9</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> (Co)chain Complexes <M>\longrightarrow </M> Homotopy Invariants</Heading> 
<ManSection> <Func Name="Cohomology" Arg="C,n"/> <Func Name="Cohomology" Arg="F,n"/> <Func Name="Cohomology" Arg="K,n"/> <Func Name="Cohomology" Arg="K,n"/> <Func Name="Cohomology" Arg="K,n"/> <Func Name="Cohomology" Arg="K,n"/> <Func Name="Cohomology" Arg="K,n"/> <Description><P/> <P/> Inputs a cochain complex <M>C</M> and integer <M>n \ge 0</M> and returns the <M>n</M>-th cohomology group of <M>C</M> as a list of its abelian invariants. <P/> Inputs a chain map <M>F</M> and integer <M>n \ge 0</M>. It returns the induced cohomology homomorphism <M>H_n(F)</M> as a homomorphism of finitely presented groups. <P/> Inputs a cubical, or pure cubical, or pure permutahedral or regular CW or simplicial complex <M>K</M> together with an integer <M>n \ge 0</M>. It returns the <M>n</M>-th integral cohomology group of <M>K</M> as a list of its abelian invariants. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap6.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArtinGroups.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutNoncrossing.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoefficientSequence.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCohomologyRings.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>12</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>13</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoxeter.html</Link><LinkText>14</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCrossedMods.html</Link><LinkText>15</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>16</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>17</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>18</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSurvey.html</Link><LinkText>19</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>20</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTopology.html</Link><LinkText>21</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTorAndExt.html</Link><LinkText>22</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTwistedCoefficients.html</Link><LinkText>23</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="CupProduct" Arg="Y"/> <Func Name="CupProduct" Arg="R,p,q,P,Q"/> <Description><P/> <P/> Inputs a regular CW-complex <M>Y</M> and returns a function <M>f(p,q,P,Q)</M>. This function <M>f</M> inputs two integers <M>p,q \ge 0</M> and two integer lists <M>P=[p_1, \ldots, p_m]</M>, <M>Q=[q_1, \ldots, q_n]</M> representing elements <M>P\in H^p(Y,\mathbb Z)</M> and <M>Q\in H^q(Y,\mathbb Z)</M>. The function <M>f</M> returns a list <M>P \cup Q</M> representing the cup product <M>P \cup Q \in H^{p+q}(Y,\mathbb Z)</M>. <P/> Inputs a free <M>\mathbb ZG</M> resolution <M>R</M> of <M>\mathbb Z</M> for some group <M>G</M>, together with integers <M>p,q \ge 0</M> and integer lists <M>P, Q</M> representing cohomology classes <M>P\in H^p(G,\mathbb Z)</M>, <M>Q\in H^q(G,\mathbb Z)</M>. An integer list representing the cup product <M>P\cup Q \in H^{p+q}(G,\mathbb Z)</M> is returned. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCohomologyRings.html</Link><LinkText>5</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Homology" Arg="C,n"/> <Func Name="Homology" Arg="F,n"/> <Func Name="Homology" Arg="K,n"/> <Func Name="Homology" Arg="K,n"/> <Func Name="Homology" Arg="K,n"/> <Func Name="Homology" Arg="K,n"/> <Func Name="Homology" Arg="K,n"/> <Description><P/> <P/> Inputs a chain complex <M>C</M> and integer <M>n \ge 0</M> and returns the <M>n</M>-th homology group of <M>C</M> as a list of its abelian invariants. <P/> Inputs a chain map <M>F</M> and integer <M>n \ge 0</M>. It returns the induced homology homomorphism <M>H_n(F)</M> as a homomorphism of finitely presented groups. <P/> Inputs a cubical, or pure cubical, or pure permutahedral or regular CW or simplicial complex <M>K</M> together with an integer <M>n \ge 0</M>. It returns the <M>n</M>-th integral homology group of <M>K</M> as a list of its abelian invariants. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap9.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArithmetic.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>12</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArtinGroups.html</Link><LinkText>13</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutAspherical.html</Link><LinkText>14</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutParallel.html</Link><LinkText>15</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutBredon.html</Link><LinkText>16</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPerformance.html</Link><LinkText>17</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCocycles.html</Link><LinkText>18</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>19</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPoincareSeries.html</Link><LinkText>20</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>21</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>22</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPolytopes.html</Link><LinkText>23</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoxeter.html</Link><LinkText>24</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutquasi.html</Link><LinkText>25</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>26</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>27</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRosenbergerMonster.html</Link><LinkText>28</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutDavisComplex.html</Link><LinkText>29</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutDefinitions.html</Link><LinkText>30</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSimplicialGroups.html</Link><LinkText>31</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>32</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSpaceGroup.html</Link><LinkText>33</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutFunctorial.html</Link><LinkText>34</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGraphsOfGroups.html</Link><LinkText>35</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>36</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTensorSquare.html</Link><LinkText>37</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLieCovers.html</Link><LinkText>38</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTorAndExt.html</Link><LinkText>39</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLie.html</Link><LinkText>40</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTwistedCoefficients.html</Link><LinkText>41</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> <Section><Heading> Visualization</Heading> 
<ManSection> <Func Name="BarCodeDisplay" Arg="L"/> <Description><P/> <P/>Displays a barcode <B>L=PersitentBettiNumbers(X,n)</B>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap10.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="BarCodeCompactDisplay" Arg="L"/> <Description><P/> <P/>Displays a barcode <B>L=PersitentBettiNumbers(X,n)</B> in compact form. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="CayleyGraphOfGroup" Arg="G,L"/> <Description><P/> <P/> Inputs a finite group <M>G</M> and a list <M>L</M> of elements in <M>G</M>.It displays the Cayley graph of the group generated by <M>L</M> where edge colours correspond to generators. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="Display" Arg="G"/> <Func Name="Display" Arg="M"/> <Func Name="Display" Arg="M"/> <Description><P/> <P/>Displays a graph <M>G</M>; a <M>2</M>- or <M>3</M>-dimensional pure cubical complex <M>M</M>; a <M>3</M>-dimensional pure permutahedral complex <M>M</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap6.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap9.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutArtinGroups.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutNoncrossing.html</Link><LinkText>12</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPeriodic.html</Link><LinkText>13</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>14</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPolytopes.html</Link><LinkText>15</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles2.html</Link><LinkText>16</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles.html</Link><LinkText>17</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSuperperfect.html</Link><LinkText>18</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGraphsOfGroups.html</Link><LinkText>19</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>20</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnotsQuandles.html</Link><LinkText>21</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTopology.html</Link><LinkText>22</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="DisplayArcPresentation" Arg="K"/> <Description><P/> <P/>Displays a <M>3</M>-dimensional pure cubical knot <B>K=PureCubicalKnot(L)</B> in the form of an arc presentation. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Var Name="DisplayCSVKnotFile"/> <Description><P/> <P/>Inputs a string <M>str</M> that identifies a csv file containing the points on a piecewise linear knot in <M>\mathbb R^3</M>. It displays the knot. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="DisplayDendrogram" Arg="L"/> <Description><P/> <P/> Displays the dendrogram <B>L:=DendrogramMat(A,t,s)</B>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="DisplayDendrogramMat" Arg="A,t,s"/> <Description><P/> <P/> Inputs an <M>n\times n</M> symmetric matrix <M>A</M> over the rationals, a rational <M>t \ge 0</M> and an integer <M>s \ge 1</M>. The dendrogram defined by <B>DendrogramMat(A,t,s)</B> is displayed. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="DisplayPDBfile" Arg="str"/> <Description><P/> <P/> Displays the protein backone described in a PDB (Protein Database) file identified by a string str such as "file.pdb" or "path/file.pdb". <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="OrbitPolytope" Arg="G,v,L"/> <Description><P/> <P/>Inputs a permutation group or finite matrix group <M>G</M> of degree <M>d</M> and a rational vector <M>v\in \mathbb R^d</M>. In both cases there is a natural action of <M>G</M> on <M>\mathbb R^d</M>. Let <M>P(G,v)</M> be the convex hull of the orbit of <M>v</M> under the action of <M>G</M>. The function also inputs a sublist <M>L</M> of the following list of strings: ["dimension","vertex_degree", "visual_graph", "schlegel", "visual"] <P/>Depending on <M>L</M>, the function displays the following information:<Br/> the dimension of the orbit polytope <M>P(G,v)</M>;<Br/> the degree of a vertex in the graph of <M>P(G,v)</M>;<Br/> a visualization of the graph of <M>P(G,v)</M>;<Br/> a visualization of the Schlegel diagram of <M>P(G,v)</M>;<Br/> a visualization of the polytope <M>P(G,v)</M> if <M>d=2,3</M>. <P/>The function requires Polymake software. <P/><B>Examples:</B> <URL><Link>../tutorial/chap11.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPolytopes.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ScatterPlot" Arg="L"/> <Description><P/> <P/> Inputs a list <M>L=[[x_1,y_1],\ldots, [x_n,y_n]]</M> of pairs of rational numbers and displays a scatter plot of the points in the <M>x</M>-<M>y</M>-plane. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> </Chapter>