  
  [1X29 [33X[0;0YCubical Complexes[133X[101X
  
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XArrayToPureCubicalComplexA,n)[110X[133X
  
  [33X[0;0YInputs  an  integer  array  [22XA[122X  of dimension [22Xd[122X and an integer [22Xn[122X. It returns a
  d-dimensional  pure cubical complex corresponding to the black/white "image"
  determined  by the threshold [22Xn[122X and the values of the entries in [22XA[122X. (Integers
  below  the  threshold  correspond  to  a  black  pixel,  and higher integers
  correspond to a white pixel.)[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPureCubicalComplexA,n)[110X[133X
  
  [33X[0;0YInputs  a  binary  array  [22XA[122X  of  dimension  [22Xd[122X.  It returns the corresponding
  d-dimensional pure cubical complex.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XFramedPureCubicalComplex(M)[110X[133X
  
  [33X[0;0YInputs  a pure cubical complex [22XM[122X 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 [22XM[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XRandomCubeOfPureCubicalComplex(M)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical complex [22XM[122X and returns a pure cubical complex [22XR[122X with
  precisely  the  same  dimensions  as  [22XM[122X.  The  complex [22XR[122X consist of one cube
  selected at random from [22XM[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPureCubicalComplexIntersection(S,T)[110X[133X
  
  [33X[0;0YInputs  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.)[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPureCubicalComplexUnion(S,T)[110X[133X
  
  [33X[0;0YInputs  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.)[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPureCubicalComplexDifference(S,T)[110X[133X
  
  [33X[0;0YInputs  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.)[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10X ReadImageAsPureCubicalComplex("file.png",n)[110X[133X
  
  [33X[0;0YReads  an image file ("file.png", "file.eps", "file.bmp" etc) and an integer
  [22Xn[122X  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 [22Xn[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10X ReadLinkImageAsPureCubicalComplex("file.png")[110X[133X
  [33X[0;0Y[10X ReadLinkImageAsPureCubicalComplex("file.png",n)[110X[133X
  
  [33X[0;0YReads  an  image  file ("file.png", "file.eps", "file.bmp" etc) containing a
  knot  or  link  diagram,  and optionally a positive integer [22Xn[122X. The integer [22Xn[122X
  should  be  a little larger than the line thickness in the link diagram, and
  if  not provided then [22Xn[122X 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".[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XReadImageSequenceAsPureCubicalComplex("directory",n)[110X[133X
  
  [33X[0;0YReads  the name of a directory containing a sequence of image files (ordered
  alphanumerically),  and  an  integer  [22Xn[122X  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 [22Xn[122X.[133X
  [33X[0;0Y[10XSize(T)[110X[133X
  
  [33X[0;0YThis  returns  the  number  of  non-zero  entries in the binary array of the
  cubical complex, or pure cubical complex T.[133X
  [33X[0;0Y[10XDimension(T)[110X[133X
  
  [33X[0;0YThis  returns  the dimension of the cubical complex, or pure cubical complex
  T.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XWritePureCubicalComplexAsImage(T,"filename","ext")[110X[133X
  
  [33X[0;0YInputs  a  2-dimensional  pure cubical complex T, and a filename followed by
  its  extension  (e.g.  "myfile"  followed  by "png"). A black/white image is
  saved to the file.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XViewPureCubicalComplex(T)[110X[133X
  [33X[0;0Y[10XViewPureCubicalComplex(T,"mozilla")[110X[133X
  
  [33X[0;0YInputs a 2-dimensional pure cubical complex T, and optionally a command such
  as "mozilla" for viewing image files. A black/white image is displayed.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XHomology(T,n)[110X[133X
  [33X[0;0Y[10XHomology(T)[110X[133X
  
  [33X[0;0YInputs  a  pure cubical complex, or cubical complex, or simplicial complex [22XT[122X
  and  a non-negative integer [22Xn[122X. It returns the n-th integral homology of [22XT[122X as
  a  list  of torsion integers. If no value of [22Xn[122X is input then the list of all
  homologies of [22XT[122X in dimensions 0 to Dimension(T) is returned .[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XBettinumbers(T,n)[110X[133X
  [33X[0;0Y[10XBettinumbers(T)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex, or cubical complex, simplicial complex or
  chain  complex [22XT[122X and a non-negative integer [22Xn[122X. The rank of the n-th rational
  homology  group  [22XH_n(T,  Q)[122X is returned. If no value for n is input then the
  list of Betti numbers in dimensions 0 to Dimension(T) is returned .[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XDirectProductOfPureCubicalComplexes(M,N)[110X[133X
  
  [33X[0;0YInputs  two pure cubical complexes [22XM,N[122X and returns their direct product [22XD[122X as
  a pure cubical complex. The dimension of [22XD[122X is the sum of the dimensions of [22XM[122X
  and [22XN[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XSuspensionOfPureCubicalComplex(M)[110X[133X
  
  [33X[0;0YInputs  a pure cubical complex [22XM[122X and returns a pure cubical complex with the
  homotopy type of the suspension of [22XM[122X.[133X
  [33X[0;0Y[10XEulerCharacteristic(T)[110X[133X
  
  [33X[0;0YInputs  a  pure cubical complex, or cubical complex, or simplicial complex [22XT[122X
  and returns its Euler characteristic.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPathComponentOfPureCubicalComplex(T,n)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex  [22XT[122X  and  an  integer [22Xn[122X in the rane 1, ...,
  Bettinumbers(T)[1]  .  It  returns  the  n-th  path component of [22XT[122X as a pure
  cubical  complex. The value [22Xn=0[122X is also allowed, in which case the number of
  path components is returned.[133X
  [33X[0;0Y[10XChainComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  pure cubical complex, or cubical complex, or simplicial complex [22XT[122X
  and returns the (often very large) cellular chain complex of [22XT[122X.[133X
  [33X[0;0Y[10XChainComplexOfPair(T,S)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex  or cubical complex [22XT[122X and subcomplex [22XS[122X. It
  returns the quotient [22XC(T)/C(S)[122X of cellular chain complexes.[133X
  [33X[0;0Y[10XExcisedPureCubicalPair(T,S)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical complex [22XT[122X and subcomplex [22XS[122X. It returns the pair [22X[T∖
  intS,  S∖  intS])[122X  of  pure cubical complexes where [22XintS[122X is the pure cubical
  complex obtained from [22XS[122X by removing its boundary.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XChainInclusionOfPureCubicalPair(S,T)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex  [22XT[122X  and subcomplex [22XS[122X. It returns the chain
  inclusion [22XC(S) → C(T)[122X of cellular chain complexes.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XChainMapOfPureCubicalPairs(M,S,N,T)[110X[133X
  
  [33X[0;0YInputs a pure cubical complex [22XN[122X and subcomplexes [22XM[122X, [22XT[122X and [22XS[122X in [22XT[122X. It returns
  the chain map [22XC(M/S) → C(N/T)[122X of quotient cellular chain complexes.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XContractPureCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex [22XT[122X of dimension [22Xd[122X and removes [22Xd[122X-dimensional
  cells  from [22XT[122X without changing the homotopy type of [22XT[122X. When the function has
  been  applied, no further [22Xd[122X-cells can be removed from [22XT[122X without changing its
  homotopy type. This function modifies [22XT[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XContractedComplex(T)[110X[133X
  
  [33X[0;0YInputs a pure cubical complex [22XT[122X and returns a structural copy of the complex
  obtained from [22XT[122X by applying the function ContractPureCubicalComplex(T).[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XZigZagContractedPureCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex  [22XT[122X  and returns a homotopy equivalent pure
  cubical  complex  [22XS[122X.  The  aim  is  for  [22XS[122X to involve fewer cells than [22XT[122X and
  certainly to involve no more cells than [22XT[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XContractCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  cubical complex [22XT[122X and removes cells without changing the homotopy
  type of [22XT[122X. It changes [22XT[122X. In particular, it adds the components T.vectors and
  T.rewrite of a discrete vector field.[133X
  
  [33X[0;0YAt  present this function only works for cubical complexes of dimension 2 or
  3.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XDVFReducedCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  cubical  complex [22XT[122X and returns a non-regular cubical complex [22XR[122X by
  constructing  a  discrete  vector  field.  The  vector  field is designed to
  minimize  the  number  of  critical  cells in [22XR[122X at the cost of allowing cell
  attaching maps that are not homeomorphisms on boundaries.[133X
  
  [33X[0;0YAt  present  this  function  works  only  for  2-  and 3-dimensional cubical
  complexes.[133X
  
  [33X[0;0YThe  function  ChainComplex(R)  can  be  used  to  obtain the cellular chain
  complex of [22XR[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XSkeletonOfCubicalComplex(T,n)[110X[133X
  
  [33X[0;0YInputs  a cubical complex, or pure cubical complex [22XT[122X and positive integer [22Xn[122X.
  It returns the [22Xn[122X-skeleton of [22XT[122X as a cubical complex.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XContractibleSubomplexOfPureCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex  [22XT[122X and returns a maximal contractible pure
  cubical subcomplex.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XAcyclicSubomplexOfPureCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical complex [22XT[122X and returns a (not necessarily connected)
  pure  cubical subcomplex having trivial homology in all degrees greater than
  [22X0[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XHomotopyEquivalentMaximalPureCubicalSubcomplex(T,S)[110X[133X
  
  [33X[0;0YInputs  a  pure cubical complex [22XT[122X together with a pure cubical subcomplex [22XS[122X.
  It  returns a pure cubical subcomplex [22XH[122X of [22XT[122X which contains [22XS[122X and is maximal
  with respect to the property that it is homotopy equivalent to [22XS[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XHomotopyEquivalentMinimalPureCubicalSubcomplex(T,S)[110X[133X
  
  [33X[0;0YInputs  a  pure cubical complex [22XT[122X together with a pure cubical subcomplex [22XS[122X.
  It  returns a pure cubical subcomplex [22XH[122X of [22XT[122X which contains [22XS[122X and is minimal
  with respect to the property that it is homotopy equivalent to [22XT[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XBoundaryOfPureCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  pure cubical complex [22XT[122X 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.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XSingularitiesOfPureCubicalComplex(T,radius,tolerance)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical complex [22XT[122X 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.)[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XThickenedPureCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  pure cubical complex [22XT[122X and returns a pure cubical complex [22XS[122X. If a
  euclidean  cube  is  in  [22XT[122X then this cube and all its neighbouring cubes are
  included in [22XS[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XCropPureCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex  [22XT[122X  and  returns  a pure cubical complex [22XS[122X
  obtained  from [22XT[122X by removing any "zero boundary sheets" of the binary array.
  Thus  [22XS[122X  and [22XT[122X are isometric as euclidean spaces but there may be fewer zero
  entries in the binary array for [22XS[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XBoundingPureCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex  [22XT[122X and returns a contractible pure cubical
  complex [22XS[122X containing [22XT[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XMorseFiltration(M,i,t,bool)[110X[133X
  [33X[0;0Y[10XMorseFiltration(M,i,t)[110X[133X
  
  [33X[0;0YInputs  a  pure cubical complex [22XM[122X of dimension [22Xd[122X, an integer [22Xi[122X between [22X1[122X and
  [22Xd[122X,  a  positive  integer  [22Xt[122X  and a boolean value True or False. The function
  returns  a  list  [22X[M_1,  M_2, ..., M_t][122X of pure cubical complexes with [22XM_k[122X a
  subcomplex  of  [22XM_k+1[122X.  The  list  is constructed by setting all slices of [22XM[122X
  perpendicular  to the [22Xi[122X-th axis equal to zero if they meet the [22Xi[122Xth axis at a
  sufficiently  high  coordinate (if bool=True) or sufficiently low coordinate
  (if bool=False).[133X
  
  [33X[0;0YIf  the  variable bool is not specified then it is assumed to have the value
  True.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XComplementOfPureCubicalComplex(T)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex  [22XT[122X and returns a pure cubical complex [22XS[122X. A
  euclidean cube is in [22XS[122X precisely when the cube is not in [22XT[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPureCubicalComplexToTextFile(file,M)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex [22XM[122X 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.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XThickeningFiltration(M,n)[110X[133X
  [33X[0;0Y[10XThickeningFiltration(M,n,k)[110X[133X
  
  [33X[0;0YInputs  a  pure  cubical  complex  [22XM[122X  and a positive integer [22Xn[122X. It returns a
  filtered  pure  cubical  complex  constructed  frim [22Xn[122X thickenings of [22XM[122X. If a
  positive integer [22Xk[122X is supplied as an optional third argument, then each step
  of the filtration is obtained from a [22Xk[122X-fold thickening.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XDendrogram(M)[110X[133X
  
  [33X[0;0YInputs a filtered pure cubical complex [22XM[122X and returns data that specifies the
  dendrogram  (or  phylogenetic  tree) describing how path components are born
  and then merge during the filtration.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XDendrogramDisplay(M)[110X[133X
  
  [33X[0;0YInputs  a  filtered  pure cubical complex [22XM[122X, or alternatively inputs the out
  from  the  command Dendrogram(M), and then uses GraphViz software to display
  the path component dendrogram of [22XM[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XDendrogramToPersistenceMat(D)[110X[133X
  
  [33X[0;0YInputs   the   output   of   the  function  Dendrogram(M)  and  returns  the
  corresponding degree 0 Betti bar code.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XReadImageAsFilteredPureCubicalComplex(file,n)[110X[133X
  
  [33X[0;0YInputs  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 [22Xn[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XComplementOfFilteredPureCubicalComplex(M)[110X[133X
  
  [33X[0;0YInputs  a  filtered  pure  cubical complex [22XM[122X and returns the complement as a
  filtered pure cubical complex.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPersistentHomologyOfFilteredPureCubicalComplex(M,n)[110X[133X
  
  [33X[0;0YInputs  a  filtered  pure cubical complex [22XM[122X and a non-negative integer [22Xn[122X. It
  returns the degree [22Xn[122X persistent homology of [22XM[122X with rational coefficients.[133X
  
