]>
The simplices of
a division ringlet are
scale-invariant, in the sense that D(n, p) {({positives}: f :1+n): sum(f) = p}
for various positive p are all simply images of one another under scalings; so
that it makes no difference which p one choses. However, when division is
limited, as in {naturals}, one gets different collections depending on p. I'll
refer to the simplices in this case as discrete
(because there are gaps
between values: for each value there is a definite distance for which there is
no value less than that far away; in naturals, for each n, there is no other
natural m less than 1 away from n). The analysis below is for the natural
ringlet, but other discrete ringlets presumably have similar results.
In particular, in a divison ringlet, D(n, p) has infinitely many members for n > 0; whereas it has finitely many in the naturals. (In either case, D(0, p) = {[p]} and D(−1, p) = {} are finite.) Although members of D(n, p) are specified as partial functions from 1+n to {positives}, so that one member of D(1, 1) maps 0 to 1 and doesn't map 1 to anything, while the other maps 1 to 1 and doesn't map zero to anything, it's convenient when writing the lists to write 0 for the officially omitted entries in a list; it's easier to read [0, 1] than [, 1] and similar, particularly when there are many omissions. For example, for naturals,
For the sake of the following discussion, I'll also write D(n, 0) for the empty list, equivalently the list of 1+n zeros. We can then partition the members f of D(n, p) by their value of f(n): given f(n) = i, (:f:n) must be in D(n−1, p−i); indeed, for naturals n, p:
in which the union is disjoint (i.e. distinct i in p+1 contribute disjoint collections to the union).
Thus, if C(n, p) is the number of members in D(n, p), we get C(n+1, p) = sum(: C(n, j) ←j |p+1). For each n, C(n, 0) = 1 (as D(n, 0) is the list whose 1+n entries are all 0); likewise, for each p, C(0, p) = 1 (as D(0, p) = {[p]}), whence C(1, p) = p+1 (as D(1, p) is {[p, 0], …, [p−i, i], …, [0, p]}) and C(2, p) = sum(: j+1 ←j :p+1) = (p+1).(p+2)/2. The number of subsets of size k within a set of size m is given by chose(m, k) = m!/k!/(m−k)! for 0 ≤ k ≤ m (zero otherwise), for which our C(0, p) = 1 = chose(0, p), C(1, p) = 1+p = chose(1, 1+p) and C(2, p) = (1+p).(2+p)/2 = chose(2+p, 2). The function chose has a useful structural property, chose(m+1, k+1) = chose(m, k) +chose(m, k+1) which I'll use below as chose(m, k) = chose(m+1, k+1) −chose(m, k+1). Whenever C(n, p) = chose(n+p, n) for all p, for some given n, we can infer
in which each j's added term matches j+1's subtracted term, cancelling to leave:
and chose(n, n+1) = 0 (there are no subsets of size n+1 in a set of
size n), so C(n, p) = chose(n+p, n) for all natural p
, for any given n,
implies C(n+1, p) = chose(n+1+p, n+1) for all natural p
also; given that
the precondition held for n = 0, we can induce that C(n, p) = chose(n+p, n) for
all natural n, p.
Indeed, for any pair of distinct tokens cut
and add
, we can
represent a list ({naturals}: f :n+1) whose sum is p by a list F with p add
entries and n cut entries, interleaved as f(0) add entries, then a cut, then
f(1) add entries, then a cut, and so on, so that F(j +sum(: f :1+j)) = cut, for
each j in n, with all other F(m) = add, and n +sum(: f :1+n) = n+p is the index
just past the end of F, at which we would have put one more cut, but we don't
need it to mark the end of the last run of add entries. There is a direct
correspondence between lists of these two forms; and a list of the latter form
is equivalently just a subset of size n (the indices of the cut entries)
selected within n+p, so there are chose(n+p, n) of them.
Thus D(n, p) has (n+p)!/n!/p! members. In particular, for given n, simplices with distinct sums aren't isomorphic; however, there is an isomorphism between D(n, p) and D(p, n) for each natural n, p (just interchange cut ↔ add in the preceding). For example, in D(1, 2) and D(2, 1), we have