This is not current.
`Vn`: Vertex number
- A non negative integer, one per vertex, unique in complex.
`GZone`: (primordial)
- an list of
`Vn`s
`Zone`:
- an array of
`facet ref`s
`facet`:
- two of
`Zone ref, cot`
`cot`:
- n by n Matrix which transforms tensors
`TC`: Topology of Complex
- A list of
`Zone`s
`ds2`: (primordial)
- An array of triples (i, k ds2) meaning the ds
^{2} for the edge between vertices i and k is ds2
`facet`: facet
- references to 2 zones, transformation matrix and inverse between bcc’s of the 2 zones.
n-permutation of vertices for transferring points in facet.

### Plumbing

A general framework for at least the geodesic code is as follows.
We have these data set types:
- topology
- which enumerates zones in terms of their global vertex numbers
- S-metric
- Simplex metric which provides ds
^{2} for the edges of a topology
- C-metric
- Continuous metric which provides ds
^{2} for the differential distances.
- embedding
- which calls out global coordinates of vertices in some prior geometry of known continuous metric properties

vertex_number ::= `int`

orientation ::= `bool`

n-simplex ::= (orientation, n-tuple of vertex_number) `int list`

n-topology ::= set of n-simplex `int list list`

S-metric ::= 1-simplex → real `int -> float`

coordinate ::= opaque structure to locate point in some classic metric space. `float array`

C-metric ::= coordinate * coordinate → `float`

embedding ::= vertex_number → coordinate `float array array`

boundary ::= topology → topology

embedding → metric
Imagine a program that reads a topology and an embedding, consults the host geometry of the embedding to compute a metric, and produces a metric n-complex.
That should suffice to define a geodesic introduced at the boundary of the complex.