One can define the naturals abstractly in terms of an initial member and a successor operator; from then one can build integers and rationals by abstract pair operations subject to equivalences. One can define mappings from the abstract naturals, defined in this way, to various representations of them, such as repetition mappings or the finite von Neumann ordinals. I have, in contrast, chosen to define the naturals to be these last, one concrete representation of the naturals; and, likewise, I have chosen a specific way of combining pairs of naturals to give a specific concrete representation of the rationals. In each case, I've chosen a representation in which the members are entities I use directly. I could, of course, have used a suitable mapping from the abstract sets that produce these particular useful entities, to make them available when I want them; but I prefer to actually have them be the entities that natural and rational numbers refer to.

Each von Neumann natural is the set of its predecessors. This makes them
convenient for specifying lists: a list (: |n) has length n, with n natural, and
its entries are the values it takes at the naturals less than n, of which there
are n. Thus the collection of lists of n naturals is just {mapping ({naturals}:
|n)}, which is easier to type (even if it does take up a bit more horizontal
space on the page; but at least it doesn't mess with the vertical spacing of
lines) than ℕ^{n} while simply using (my) standard denotations
without adding yet another overload to the meaning of superscripts.

One of the major areas of mathematics that's of interest to physicists is the study of linear (or vector) spaces, in which one can define translations, which simply add a constant to their input. Scaling the constant by a whole number corresponds to repeating the translation that whole number of times. So my chosen representation of the natural ratios (what you get by dividing a counting number by a positive whole number; non-negative numbers with simple fractional parts) extends this action of whole numbers to give you scaling by rationals: for whole numbers n, m with m > 0 and a vector v in some space, where add(v) is the translation (: x +v ←x :), the result of scaling v by n/m gives the translation add(v.n/m) for which repeat(m, add(v.n/m)) = repeat(n, add(v)). So I actually define n/m to be reverse(repeat(m))∘repeat(n) which, though ugly to write, relates add(v.n/m) to add(v), so that (n/m)(add(v)) ≡ add(v.n/m). This makes rational scaling available (as far as possible) everywhere that addition is defined.

Written by Eddy.