By an “n-Complex”, used as a noun in these pages, I mean a bunch of n dimensional simplexes glued together. The word has been used in the past in that sense but meanings shift. A complex is specified by enumerating its vertexes. Vertexes are named by assigning integers to them. We use the terms zone, facet and bone as described here to refer respectively to n, n−1 and n−2 dimensional simplexes. The only facets we are interested in share n vertices with a zone and the only bones we are interested in share n−1 vertices with a facet. The gluing happens just when two zones share a facet. For what its worth a vertex is a 0-simplex and an edge between two vertices is a 1-simplex.
This code computes the boundary of a complex which is another complex of one less dimensions. At this level of design we speak as if the whole 4-complex is in memory at once. Indeed I expect to write some exploratory code that way. If the code should proceed beyond exploration then only a time slice of the complex would be needed. Perhaps GC will take care of the details.
For a 4-complex describing a region of space-time, the complex will be simply connected except perhaps for a black hole thru the complex. There will be two portions of the complex serving as bookends—the beginning time-slice and the ending time slice which we call the frontier.
Consider extending the complex on its frontier. The frontier consists of facets whose edges all have positive ds2s—i.e. space like facets. The main goal is to find the geometry of the complex which is conveniently captured as ds2s of all the edges, along with the topology, of course. The ds2 is negative for time-like edges.
Consider a vertex f on the frontier and the union S of the facets which have f as a vertex. S will be a polygonal shaped portion of 3-space—a 3-complex. Imagine yourself at f. You see the polyhedron S from the inside—its boundary is composed of bones which are triangles. There are several ways the frontier may be advanced. The most obvious is to allocate a new vertex to serve as a successor f' to f where you now sit. You come up with a negative number to serve as the ds2 of the time like edge between f and f'. You must also come up with space like (positive) ds2 between f' and the extant visible vertices. There are several sorts of limitations on these new numbers: