Regular CW-Complexes

SimplicialComplexToRegularCWComplex
SimplicialComplexToRegularCWComplex(K)

Inputs a simplicial complex K and returns the corresponding regular CW-complex.
CubicalComplexToRegularCWComplex
CubicalComplexToRegularCWComplex(K)
CubicalComplexToRegularCWComplex(K,n)

Inputs a pure cubical complex (or cubical complex) K and returns the corresponding regular CW-complex. If a positive integer n is entered as an optional second argument, then just the n-skeleton of K is returned.
CriticalCellsOfRegularCWComplex
CriticalCellsOfRegularCWComplex(Y)
CriticalCellsOfRegularCWComplex(Y,n)

Inputs a regular CW-complex Y and returns the critical cells of Y with respect to some discrete vector field. If Y does not initially have a discrete vector field then one is constructed.

If a positive integer n is given as a second optional input, then just the critical cells in dimensions up to and including n are returned.

The function CriticalCellsOfRegularCWComplex(Y) works by homotopy reducing cells starting at the top dimension. The function CriticalCellsOfRegularCWComplex(Y,n) works by homotopy coreducing cells starting at dimension 0. The two methods may well return different numbers of cells.
ChainComplex
ChainComplex(Y)

Inputs a regular CW-complex Y and returns the cellular chain complex of a CW-complex W whose cells correspond to the critical cells of Y with respect to some discrete vector field. If Y does not initially have a discrete vector field then one is constructed.
ChainComplexOfRegularCWComplex
ChainComplexOfRegularCWComplex(Y)

Inputs a regular CW-complex Y and returns the cellular chain complex of Y.
FundamentalGroup
FundamentalGroupOfRegularCWComplex
FundamentalGroup(Y)
FundamentalGroup(Y,n)

Inputs a regular CW-complex Y and, optionally, the number of some 0-cell. It returns the fundamental group of Y based at the 0-cell n. The group is returned as a finitely presented group. If n is not specified then it is set n=1. The algorithm requires a discrete vector field on Y. If Y does not initially have a discrete vector field then one is constructed.