<Chapter><Heading>Cubical Complexes</Heading> <Section><Heading> &nbsp;</Heading> 
<ManSection> <Func Name="ArrayToPureCubicalComplex" Arg="A,n"/> <Description> <P/> Inputs an integer array <M>A</M> of dimension <M>d</M> and an integer <M>n</M>. It returns a d-dimensional pure cubical complex corresponding to the black/white "image" determined by the threshold <M>n</M> and the values of the entries in <M>A</M>. (Integers below the threshold correspond to a black pixel, and higher integers correspond to a white pixel.) <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="PureCubicalComplex" Arg="A,n"/> <Description> <P/> Inputs a binary array <M>A</M> of dimension <M>d</M>. It returns the corresponding d-dimensional pure 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="FramedPureCubicalComplex" Arg="M"/> <Description> <P/> Inputs a pure cubical complex <M>M</M> and returns the pure cubical complex with a border of zeros attached the each face of the boundary array M!.boundaryArray. This function just adds a bit of space for performing operations such as thickenings to <M>M</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="RandomCubeOfPureCubicalComplex" Arg="M"/> <Description> <P/> Inputs a pure cubical complex <M>M</M> and returns a pure cubical complex <M>R</M> with precisely the same dimensions as <M>M</M>. The complex <M>R</M> consist of one cube selected at random from <M>M</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PureCubicalComplexIntersection" Arg="S,T"/> <Description> <P/> Inputs two pure cubical complexes with common dimension and array size. It returns the intersection of the two complexes. (An entry in the binary array of the intersection has value 1 if and only if the corresponding entries in the binary arrays of S and T both have value 1.) <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PureCubicalComplexUnion" Arg="S,T"/> <Description> <P/> Inputs two pure cubical complexes with common dimension and array size. It returns the union of the two complexes. (An entry in the binary array of the union has value 1 if and only if at least one of the corresponding entries in the binary arrays of S and T has value 1.) <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PureCubicalComplexDifference" Arg="S,T"/> <Description> <P/> Inputs two pure cubical complexes with common dimension and array size. It returns the difference S-T. (An entry in the binary array of the difference has value 1 if and only if the corresponding entry in the binary array of S is 1 and the corresponding entry in the binary array of T is 0.) <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ReadImageAsPureCubicalComplex" Arg="str,n"/> <Description> <P/> Reads an image file <M>str</M> (= "file.png", "file.eps", "file.bmp" etc) and an integer <M>n</M> between 0 and 765. It returns a 2-dimensional pure cubical complex based on the black/white version of the image determined by the threshold <M>n</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;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>4</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ReadLinkImageAsPureCubicalComplex" Arg="str"/> <Func Name="ReadLinkImageAsPureCubicalComplex" Arg="str,n"/> <Description> <P/> Reads an image file <M>str</M> (= "file.png", "file.eps", "file.bmp" etc) containing a knot or link diagram, and optionally a positive integer <M>n</M>. The integer <M>n</M> should be a little larger than the line thickness in the link diagram, and if not provided then <M>n</M> is set equal to 10. The function tries to output the corresponding knot or link as a 3-dimensional pure cubical complex. Ideally the link diagram should be produced with line thickness 6 in Xfig, and the under-crossing spaces should not be too large or too small or too near one another. The function does not always succeed: it applies several checks, and if one of these checks fails then the function returns "fail". <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ReadImageSequenceAsPureCubicalComplex" Arg="dir,n"/> <Description> <P/> Reads the name of a directory <M>dir</M> containing a sequence of image files (ordered alphanumerically), and an integer <M>n</M> between 0 and 765. It returns a 3-dimensional pure cubical complex based on the black/white version of the images determined by the threshold <M>n</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Size" Arg="T"/> <Description> <P/> This returns the number of non-zero entries in the binary array of the cubical complex, or pure cubical complex T. <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/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/aboutLinks.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutMetrics.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/aboutPeripheral.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/aboutQuandles2.html</Link><LinkText>14</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles.html</Link><LinkText>15</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>16</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutSimplicialGroups.html</Link><LinkText>17</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>18</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>19</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Dimension" Arg="T"/> <Description> <P/> This returns the dimension of the cubical complex, or pure cubical complex T. <P/><B>Examples:</B> <URL><Link>../tutorial/chap3.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.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/aboutDefinitions.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTopology.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLieCovers.html</Link><LinkText>8</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="WritePureCubicalComplexAsImage" Arg="T,str1,str2"/> <Description> <P/> Inputs a 2-dimensional pure cubical complex T, and a filename <M>str1</M> followed by its extension <M>str2</M> (e.g. <M>str1</M>="myfile" followed by <M>str2</M>="png"). A black/white image is saved to the file. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ViewPureCubicalComplex" Arg="T"/> <Func Name="ViewPureCubicalComplex" Arg="T,str"/> <Description> <P/> Inputs a 2-dimensional pure cubical complex T, and optionally a command such as <M>str</M>="mozilla" for viewing image files. A black/white image is displayed. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Homology" Arg="T,n"/> <Func Name="Homology" Arg="T"/> <Description> <P/> Inputs a pure cubical complex, or cubical complex, or simplicial complex <M>T</M> and a non-negative integer <M>n</M>. It returns the n-th integral homology of <M>T</M> as a list of torsion integers. If no value of <M>n</M> is input then the list of all homologies of <M>T</M> in dimensions 0 to Dimension(T) 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/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> 
<ManSection> <Func Name="Bettinumbers" Arg="T,n"/> <Func Name="Bettinumbers" Arg="T"/> <Description> <P/> Inputs a pure cubical complex, or cubical complex, simplicial complex or chain complex <M>T</M> and a non-negative integer <M>n</M>. The rank of the n-th rational homology group <M>H_n(T,\mathbb Q)</M> is returned. If no value for n is input then the list of Betti numbers in dimensions 0 to Dimension(T) is returned . <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutMetrics.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="DirectProductOfPureCubicalComplexes" Arg="M,N"/> <Description> <P/> Inputs two pure cubical complexes <M>M,N</M> and returns their direct product <M>D</M> as a pure cubical complex. The dimension of <M>D</M> is the sum of the dimensions of <M>M</M> and <M>N</M>. <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="SuspensionOfPureCubicalComplex" Arg="M"/> <Description> <P/> Inputs a pure cubical complex <M>M</M> and returns a pure cubical complex with the homotopy type of the suspension of <M>M</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="EulerCharacteristic" Arg="T"/> <Description> <P/> Inputs a pure cubical complex, or cubical complex, or simplicial complex <M>T</M> and returns its Euler characteristic. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="PathComponentOfPureCubicalComplex" Arg="T,n"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and an integer <M>n</M> in the rane 1, ..., Bettinumbers(T)[1] . It returns the n-th path component of <M>T</M> as a pure cubical complex. The value <M>n=0</M> is also allowed, in which case the number of path components is returned. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ChainComplex" Arg="T"/> <Description> <P/> Inputs a pure cubical complex, or cubical complex, or simplicial complex <M>T</M> and returns the (often very large) cellular chain complex of <M>T</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> <Func Name="ChainComplexOfPair" Arg="T,S"/> <Description> <P/> Inputs a pure cubical complex or cubical complex <M>T</M> and subcomplex <M>S</M>. It returns the quotient <M>C(T)/C(S)</M> of cellular chain complexes. <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="ExcisedPureCubicalPair" Arg="T,S"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and subcomplex <M>S</M>. It returns the pair <M>[T\setminus intS, S\setminus intS])</M> of pure cubical complexes where <M>intS</M> is the pure cubical complex obtained from <M>S</M> by removing its boundary. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ChainInclusionOfPureCubicalPair" Arg="S,T"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and subcomplex <M>S</M>. It returns the chain inclusion <M>C(S) \rightarrow C(T)</M> of cellular chain complexes. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Var Name="ChainMapOfPureCubicalPairs"/> <Description> <P/> Inputs a pure cubical complex <M>N</M> and subcomplexes <M>M</M>, <M>T</M> and <M>S</M> in <M>T</M>. It returns the chain map <M>C(M/S) \rightarrow C(N/T)</M> of quotient cellular chain complexes. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ContractPureCubicalComplex" Arg="T"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> of dimension <M>d</M> and removes <M>d</M>-dimensional cells from <M>T</M> without changing the homotopy type of <M>T</M>. When the function has been applied, no further <M>d</M>-cells can be removed from <M>T</M> without changing its homotopy type. This function modifies <M>T</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ContractedComplex" Arg="T"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and returns a structural copy of the complex obtained from <M>T</M> by applying the function ContractPureCubicalComplex(T). <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/chap7.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;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>9</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ZigZagContractedPureCubicalComplex" Arg="T"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and returns a homotopy equivalent pure cubical complex <M>S</M>. The aim is for <M>S</M> to involve fewer cells than <M>T</M> and certainly to involve no more cells than <M>T</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ContractCubicalComplex" Arg="T"/> <Description> <P/> Inputs a cubical complex <M>T</M> and removes cells without changing the homotopy type of <M>T</M>. It changes <M>T</M>. In particular, it adds the components T.vectors and T.rewrite of a discrete vector field. <P/> At present this function only works for cubical complexes of dimension 2 or 3. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="DVFReducedCubicalComplex" Arg="T"/> <Description> <P/> Inputs a cubical complex <M>T</M> and returns a non-regular cubical complex <M>R</M> by constructing a discrete vector field. The vector field is designed to minimize the number of critical cells in <M>R</M> at the cost of allowing cell attaching maps that are not homeomorphisms on boundaries. <P/> At present this function works only for 2- and 3-dimensional cubical complexes. <P/> The function ChainComplex(R) can be used to obtain the cellular chain complex of <M>R</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="SkeletonOfCubicalComplex" Arg="T,n"/> <Description> <P/> Inputs a cubical complex, or pure cubical complex <M>T</M> and positive integer <M>n</M>. It returns the <M>n</M>-skeleton of <M>T</M> as a cubical complex. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Var Name="ContractibleSubomplexOfPureCubicalComplex"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and returns a maximal contractible pure cubical subcomplex. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Var Name="AcyclicSubomplexOfPureCubicalComplex"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and returns a (not necessarily connected) pure cubical subcomplex having trivial homology in all degrees greater than <M>0</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="HomotopyEquivalentMaximalPureCubicalSubcomplex" Arg="T,S"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> together with a pure cubical subcomplex <M>S</M>. It returns a pure cubical subcomplex <M>H</M> of <M>T</M> which contains <M>S</M> and is maximal with respect to the property that it is homotopy equivalent to <M>S</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="HomotopyEquivalentMinimalPureCubicalSubcomplex" Arg="T,S"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> together with a pure cubical subcomplex <M>S</M>. It returns a pure cubical subcomplex <M>H</M> of <M>T</M> which contains <M>S</M> and is minimal with respect to the property that it is homotopy equivalent to <M>T</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="BoundaryOfPureCubicalComplex" Arg="T"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and returns its boundary as a pure cubical complex. The boundary consists of all cubes which have one or more facets that lie in just the one cube. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="SingularitiesOfPureCubicalComplex" Arg="T,radius,tolerance"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> together with a positive integer "radius" and an integer "tolerance" in the range 1..100. It returns the pure cubical subcomplex of those cells in the boundary where the boundary is not differentiable. (The method for deciding differentiability at a point is crude/discrete, prone to errors and depends on the radius and tolerance.) <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ThickenedPureCubicalComplex" Arg="T"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and returns a pure cubical complex <M>S</M>. If a euclidean cube is in <M>T</M> then this cube and all its neighbouring cubes are included in <M>S</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="CropPureCubicalComplex" Arg="T"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and returns a pure cubical complex <M>S</M> obtained from <M>T</M> by removing any "zero boundary sheets" of the binary array. Thus <M>S</M> and <M>T</M> are isometric as euclidean spaces but there may be fewer zero entries in the binary array for <M>S</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="BoundingPureCubicalComplex" Arg="T"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and returns a contractible pure cubical complex <M>S</M> containing <M>T</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="MorseFiltration" Arg="M,i,t,bool"/> <Func Name="MorseFiltration" Arg="M,i,t"/> <Description> <P/> Inputs a pure cubical complex <M>M</M> of dimension <M>d</M>, an integer <M>i</M> between <M>1</M> and <M>d</M>, a positive integer <M>t</M> and a boolean value True or False. The function returns a list <M>[M_1, M_2, ..., M_t]</M> of pure cubical complexes with <M>M_k</M> a subcomplex of <M>M_{k+1}</M>. The list is constructed by setting all slices of <M>M</M> perpendicular to the <M>i</M>-th axis equal to zero if they meet the <M>i</M>th axis at a sufficiently high coordinate (if bool=True) or sufficiently low coordinate (if bool=False). <P/> If the variable bool is not specified then it is assumed to have the value True. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ComplementOfPureCubicalComplex" Arg="T"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and returns a pure cubical complex <M>S</M>. A euclidean cube is in <M>S</M> precisely when the cube is not in <M>T</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>3</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="PureCubicalComplexToTextFile" Arg="file,M"/> <Description> <P/> Inputs a pure cubical complex <M>M</M> and a string containing the address of a file. A representation of this complex is written to the file in a format that can be read by the CAPD (Computer Assisted Proofs in Dynamics) software developed by Marian Mrozek and others. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ThickeningFiltration" Arg="M,n"/> <Func Name="ThickeningFiltration" Arg="M,n,k"/> <Description> <P/> Inputs a pure cubical complex <M>M</M> and a positive integer <M>n</M>. It returns a filtered pure cubical complex constructed frim <M>n</M> thickenings of <M>M</M>. If a positive integer <M>k</M> is supplied as an optional third argument, then each step of the filtration is obtained from a <M>k</M>-fold thickening. <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> 
<ManSection> <Func Name="Dendrogram" Arg="M"/> <Description> <P/> Inputs a filtered pure cubical complex <M>M</M> and returns data that specifies the dendrogram (or phylogenetic tree) describing how path components are born and then merge during the filtration. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Var Name="DendrogramDisplay"/> <Description> <P/> Inputs a filtered pure cubical complex <M>M</M>, or alternatively inputs the out from the command Dendrogram(M), and then uses GraphViz software to display the path component dendrogram of <M>M</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="DendrogramToPersistenceMat" Arg="D"/> <Description> <P/> Inputs the output of the function Dendrogram(M) and returns the corresponding degree 0 Betti bar code. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="ReadImageAsFilteredPureCubicalComplex" Arg="file,n"/> <Description> <P/> Inputs a string containing the path to an image file, together with a positive integer n. It returns a filtered pure cubical complex of filtration length <M>n</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="ComplementOfFilteredPureCubicalComplex" Arg="M"/> <Description> <P/> Inputs a filtered pure cubical complex <M>M</M> and returns the complement as a filtered pure cubical complex. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="PersistentHomologyOfFilteredPureCubicalComplex" Arg="M,n"/> <Description> <P/> Inputs a filtered pure cubical complex <M>M</M> and a non-negative integer <M>n</M>. It returns the degree <M>n</M> persistent homology of <M> M</M> with rational coefficients. <P/><B>Examples:</B> 
</Description> </ManSection> </Section> </Chapter>