A simplex is the generalisation, to arbitrary dimension, of triangles in two dimensions and tetrahedra in three. It most prominently has vertices, edges joining its vertices and further kindred structures as we go to higher dimension. What follows is a rather concrete model of a fairly general description of simplices.
The canonical n-simplex, for some given natural n, is the collection S(n) = {({positive scalars}: p :1+n): sum(p) = 1}. An n-simplex is any topological space topologically isomorphic to S(n).
Note that p in S(n) is not constrained to accept all members of 1+n =
{0,...,n} as input; but, for its sum to be 1, it must accept at least one input.
For all practical purposes, if p ignores some i in 1+n, one may treat it as if
p(i) were 0; however, allowing p to ignore i in this case enables me to insist
on all of p's outputs being positive. It also requires the definition of
addition to be of form: p+q maps i to p(i)+q(i) if both accept i, to p(i) if
only p does and to q(i) if only q does; p+q ignores i if both p and q do so.
This way, (:p|), the collection of inputs p accepts, is the support
of p
- those i in 1+n for which p(i) is positive.
A topology naturally arises on S(n), generated by taking the mappings
({positives}: p(i) ←p |S(n)), for each i in 1+n, to be continuous; from the
natural topology induced by the natural ordering of positive scalars, these
imply a topology on S(n). In this topology, any path in S(n) can be deformed
continuously onto a constant path
- i.e. a single point - even if the
path is periodic and the deformation is constrained to preserve this. Indeed,
there is a continuous deformation of the whole of S(n) away to a single point:
Call this shrink, for now; for each t, shrink(t) is a continuous
mapping from S(n) into itself; for each p in S(n), (: shrink(t,p) ←t :) is
a continuous trajectory in S(n), with shrink(0,p) = p, while shrink(1,p) =
({1/(n+1)}:|1+n), i.e. the list of 1+n equal shares of 1; so this continuous
trajectory starts at p and ends at the middle
of the simplex. Thus
shrink is a continuous transformation of S(n) onto one position in its interior.
One could, of course, just as readily shrink towards one of the corners or any
other position in S(n).
An alternative way of reading S(n) is as the collection of propability distributions on the collection 1+n = {0,1,...,n}, i.e. of measures on 1+n having total measure 1. A measure on N is a linear map from, for each linear domain U, {mappings (U: |N)} to U; the total of such a measure is its output when given, as input, ({scalars}: 1←i |N), which maps each member of N to the fixed scalar value 1. When N is finite, as is 1+n above, we can define summation over N and represent any measure on N by a mapping ({scalars}: m :N); the measure is then (U: sum(m.p) ← p :{mappings (U::N)}), wherein m.p = (U: m(i).p(i) ←i :N) with (:m.p|) equal to the intersection of (:m|) and (:p|). That this is linear in p follows trivially, provided q+p, for any mapping (U:q:N), is defined on the union of (:q|) and (:p|), as discussed above.
Describe a measure on a finite collection, N, as positive
if it can
be written, in terms of some ({positive scalars}: m :N), as sum(m.p) ←p;
then sum gives us a one-to-one correspondence between members of S(n) and
positive measures on 1+n with total measure 1. (It might be better to call
these non-negative, since some such positive
measures still map some
genuine mappings ({positives}:|N) to zero.)
A general n-simplex is topologically isomorphic to S(n); identify, as its vertices, the positions corresponding to vertices of S(n), namely {({1}:|{i}): i in 1+n}, where the whole sum is concentrated on one member of 1+n; on S(n) we have the scalar functions of position ({positives}: p(i) ← p |S(n)) for each i in 1+n, which we can compose with our isomorphism to obtain, for each i, a mapping ({positives}: |n-simplex); identifying i with its vertex, we thus obtain a mapping from vertices to continuous non-negative scalar functions of position, within the simplex; each vertex's scalar function is 1 at that vertex; the sum of all these functions, at any given position, is 1; so one vertex's scalar function, evaluated at another vertex, either gives 0 or rejects the input. Each scalar function is positive throughout the interior of the simplex.
We can equally construe this as a mapping from positions in the simplex to
positive measures on the vertices of the simplex. When the vertices of S(n) are
considered as vectors in {mapping ({positive scalars}::1+n)} and the measure
associated with position p is applied to ({vectors}: ({1}:|{i}) ←i :1+n),
the vector it produces is simply sum(: p(i).({1}:|{i}) ← i :1+n). Now,
p(i).({1}:|{i}) maps j to p(i) if j is i and ignores j, or maps it to 0,
otherwise; so summing over i, we get a mapping which maps j to p(j); which is to
say, the mapping p. Thus the measure on the simplex's vertices associated with
a position within the simplex may sensibly be thought of as describing the given
position as the average
of the vertices, using positive weightings but a
total weight of 1.
Pause to wind S(2), S(1), ... backwards and we find: S(n) is the canonical
n-simplex; there are n degrees of freedom of movement within it; S(2) is a
triangle with three sides, each of which is a 1-simplex; S(1) is a line with two
ends, each of which is a 0-simplex; S(0) = {mapping ({positives}:f:1): sum(f) =
one} but (:f:1) is (:f:{0}) so sum(f) is just f(0), whence f(0) = one, so S(0) =
{[one]}, here using one
as name for the scalar multiplicative identity
and 1 as the natural number {0}, with 0 as the natural number {}, a.k.a. empty.
In principle we can also look at mappings ({positives}:f:0) but, since 0 =
{}, the only such mapping is empty, whose sum is the scalar zero (if one is
available, but in any case), not one; so {mapping (:f:empty)} = {} may be
construed as a sort of S(-1)
. When we ask for the boundary of S(0), the
pattern of higher simplices suggests we look for one (-1)-simplex, whose
boundary would consist of no ... ah, but, there being none of them, we don't
need to say they would have been (-2)-simplices. As S(-1) is empty, and any
n-simplex is isomorphic to S(n), every (-1)-simplex is empty, i.e. there
is only one (-1)-simplex; the empty simplex is the boundary of S(0),
and has no boundary. This is largely irrelevant, but makes some inductive
proofs later on easier to kick-start.
Now, for any subset M of 1+n, there's a corresponding subset of S(n), namely those f in S(n) for which (:f:M) = f, i.e. M subsumes (:f|); since sum(f) is one, this implies M is non-empty. Let 1+m be the number of members M has; m is at most n and our subset of S(n) is an m-simplex; it's described as an m-face of S(n); likewise, a topological isomorphism between S(n) and an n-simplex maps this face to an m-face of the n-simplex. An n-simplex has i-faces for i in 1+n; its only n-face is itself, its 0-faces are its vertices, its 1-faces are its edges. [In theory, at least, the (-1)-simplex boundaries of its 0-faces should be counted as (-1)-faces.]
Let K be M's complement
in 1+n, i.e. K and M have empty intersection
and their union is 1+n; K = {i in 1+n: i not in M}. This corresponds to
partitioning the vertices of a simplex: each part yields a face, on which the
scalar functions associated with the other part's vertices are all zero; if 1+k
is K's number of members, so 1+k+1+m=1+n or 1+k+m=n; we get two opposite
faces
, a k-face and an m-face with 1+k+m = n.
Given K, M et al. as above, we have scalar functions on S(n) defined by (: sum(:p:K) ←p :S(n)) and (: sum(:p:M) ←p :S(n)); clearly, these add up to 1 throughout S(n); the former is zero, and the latter is one, on the m-face {mapping ({positive}: p :M): sum(:p:M) = 1}; and conversely for the k-face with K in M's place.
Now consider a smooth transformation ({topological isomorphisms}: (S(n)| f(t) |S(n)) ← t |{scalars between zero and one}) of S(n) onto itself - i.e. f(0) is the identity on S(n), f(1) is some smoothly-equivalent topological isomorphism of S(n). (Where S(n) is seen as a face of S(i+n) for some positive natural i, this is like smoothly transforming one of the n-faces of S(i+n) within S(i+n) onto another n-face, then comparing the results via each face's isomorphism with S(n).) For each p in S(n), (S(n): f(t,p) ← t :) is a smooth trajectory starting at p; it may also end at p, but need not. Suppose, furthermore, that f preserves the faces of S(n) - that is, for each face F of S(n), (: (F: f(t) :F) ←t :) is in fact a smooth transformation of F, i.e. is a smooth mapping ({topological isomorphisms}: (F|f(t)|F) ←t |{scalars between zero and one}).
So what I'm really describing here is a trajectory, in {simplicial
isomorphism (S(n)||S(n))}, where a simplicial isomorphism of S(n) is a mapping
(S(n)|f|S(n)) for which, for each face F of S(n), (:f:F) and (:reverse(f):F) are
topological isomorphisms (F||F). [Note: (:f:F) = (:f(p)←p:F),
(:reverse(f):F) =(:p←f(p):F).] The collection of simplicial isomorphisms
acquires a topology from that of S(n); it is closed under composition; composing
f before or after the identity on S(n), which is a simplicial isomorphism of
S(n), yields f, making S(n) a natural identity for the binary operator
composition
. Our trajectory in R(n) = {simplicial isomorphisms of S(n)}
starts at the identity and can explore a path-connected neighbourhood of the
identity.
What can a simplicial isomorphism do ? By definition, it preserves each face, so let's start with the vertices: they can't move. Between any two vertices, there's an edge: it has to be transformed onto itself without moving the ends. That's easy enough; the scalar fields associated with the two vertices add up to one at each point on the edge, each being one at one end, zero at the other end and continuously varying in between; this gives us two mutually complementary topological isomorphisms, natural to the simplex, between the edge and the scalars between zero and one; either equips us with an isomorphism between the collection of simplicial isomorphisms on the edge and the collection of simplicial isomorphisms on the scalars from zero to one (which is a 1-simplex). The latter are easy to describe: each is a continuous function, f, on the unit interval (i.e. the scalars from zero to one) of which both zero and one are fixed points (i.e. f(one) = one, f(zero) = zero), which is differentiable throughout the interior of the interval, with positive gradient throughout (and it may need to vary continuously, but I'm not sure ...) If the line were a rubber string stretched between fixed end-points, this would amount to pulling along the string to stretch it (some more) in some places and allow it to relax a bit in others, thereby moving each point along the line to a continuously varying degree.
So an edge can stretch and shrink along its length, keeping its ends fixed. A face has three edges, each doing its own stretching and shrinking; picture a triangular rubber sheet, clamped all along each edge to a triangular frame which holds each edge stretched-and-shrunk along its length; the sheet in between is the rest of the face; can we stretch and squeeze it, we can even twist it (still keeping within the plane of the triangle).
The isomorphism between an n-simplex and S(n) delivers 1+n scalar fields on
the simplex, whose sum is 1. Any n of those scalar fields are
independent
variables on S(n), hence - via the isomorphism - on any
n-simplex. This makes them suitable for use as a chart on a smooth manifold,
when the n-simplex is a neighbourhood (i.e. subsumes an open patch of the smooth
manifold); their gradients form a basis of the gradient bundle, yielding a dual
basis of the tangent bundle. However, because we have 1+n variables with just
one dependency, we can exploit the situation to obtain 1+n vector directions
corresponding to
our 1+n scalar fields - namely: for given i in 1+n we
have the associated scalar field x(i) = ({positive scalars}: p(i) ←p
:S(n)); the gradients of these fields, dx(i) for i in 1+n, sum to zero
everywhere (because sum(x) = 1 is constant, so sum(dx) is zero); for each i in
1+n and position p in S(n)'s interior, there is a unique direction at p for
which, along a path in this direction at p, all the scalar fields x(j), for j
other than i, vary at equal rates; x(i) then varies at -n times the rate of the
other n scalar fields. [Construction: use the dx(j) for j not equal to i as a
basis for gradients, construct the dual basis of tangents, add the members of
it; this is a tangent parallel to which the x(j) with j not equal to i all vary
at rate 1.] We thus obtain ({tangents}: v :1+n) for which v(i)·dx(i) is
n, v(i)·dx(j) = -1 for j, i distinct; furthermore, sum(v)·dx(i) is
zero for each i, as the sum(: v(j)·dx(i) ←j |1+n) = zero since it
comprises n, from v(i)·dx(i), plus n copies of -1 from the other
v(j)·dx(j); making a total of zero. Since (: dx |1+n) spans {gradients},
sum(v)·u is zero for every gradient u, so sum(v) is zero.
Again, for each i, the v(j) with j not equal to i form a basis of {tangents} at each point in the simplex's interior, so can be used to express any tangent as sum(t.v) for some ({scalars}: t :1+n) with i not in (:t|). Now, sum(v) is zero, so adding an arbitrary constant ({scalars}:|1+n) to t won't change sum(t.v), though it will clearly change sum(t), and t(i) will no longer be zero. This will let us force sum(t) to be any particular value we like (e.g. zero or one), but it will equally allow us (by adding constant ({zero}:|1+n) to t, to make it defined everywhere, hence simply a list of length 1+n scalars, finding its minimum - if t has negative entries, this delivers the biggest of them, otherwise zero is the minimum - the minimum from each entry in the list to obtain a non-negative list with some zero entries, then ignore the zero entries) to find a replacement for t, giving the same value for sum(t.v), with (:t|) still not being all of 1+n but now with (|t:) subsumed by {positives}. This constraint on t (not defined on all of 1+n, but positive where defined) provides a unique choice of ({positives}: t :1+n) to represent each tangent as sum(t.v): uniqueness follows from the fact that the only linear dependence among v's outputs is sum(v) = zero, and adding any constant to each member of t give t values on all of 1+n, unless the constant were negative, in which case those i ignored by t would have -ve values in place of t(i).
So any tangent in the interior of the simplex is a positive sum of the vectors associated with our scalar fields.
We can stitch together any finite-dimensional smooth manifold as a union of overlapping simplices, optionally only overlapping in their boundaries (if they overlap otherwise, cut them up into smaller simplices which don't). In the overlap, even if it is only the boundary, each simplex supplies its own family of co-ordinates: we must ask how the co-ordinates of one relate to those of the other. The portion of the smooth manifold in which two simplices overlap is equipped with two isomorphisms between the overlap and, for each isomorphism, a sub-set of a canonical simplex. By composing one isomorphism with the reverse of the other, we can obtain a mapping from one subset of a canonical simplex to another subset of a canonical simplex (not necessarily the same one).
So consider a topological isomorphism between a subset of S(n) and a subset
of S(m); with no loss of generality, presume that n is no greater than m. We
should be able to describe the derivatives of S(n)'s co-ordinates with respect
to those of S(m); the notion smooth manifold
should then come down to
these derivatives being smooth functions of position in S(n), possibly joined
with a topological constraint. Now, unless n is greater than m, S(n) appears as
a sub-set of S(m), comprising those f in S(m) for which (:f:n) = f - i.e., n
subsumes (:f|); consequently, so does S(n)'s subset. There must needs be a
continuous deformation of S(n)'s subset, within S(m), into its image under the
smooth
isomorphism, via the intersection on the manifold of the two
simplices. Whether that can already be inferred or needs to be taken as an
axiom isn't yet clear to me.
Consider the easy case first.
, e.g. that there should be a continuous deformation,
within S(m), transforming the given subset of S(n) continuously, within
S(m), onto its image i
position to positive measures on finite
collections: either or both might map position
I presume a topological context, in which each position is surrounded by at
least one open neighbourhood
within the context. We can define mappings
from such a context to scalar values, or to lists of scalar values; we can use
natural topologies on scalars, and (inferred therefrom) on lists of scalars, to
distinguish which mappings from our context are continuous.