a constructor for ordinals.
Major Section:  PROGRAMMING

Make-ord is the ordinal constructor. Its use is recommended instead of using cons to make ordinals. For a discussion of ordinals, see ordinals.

For any ordinal, alpha < epsilon-0, there exist natural numbers p and n, positive integers x1, x2, ..., xn and ordinals a1 > a2 > ... > an > 0 such that alpha > a1 and alpha = w^(a1)x1 + w^(a2)x2 + ... + w^(an)xn + p. We call a1 the ``first exponent'', x1 the ``first coefficient'', and the remainder (w^(a2)x2 + ... + w^(an)xn + p) the ``rest'' of alpha.

(Make-ord fe fco rst) corresponds to the ordinal (w^fe)fco + rst. Thus the first infinite ordinal, w (omega), is constructed by

(make-ord 1 1 0)
and, for example, the ordinal (w^2)5 + w2 + 7 is constructed by:
(make-ord 2 5 (make-ord 1 2 7)) .

The reason make-ord is used rather than cons is that it allows us to reason more abstractly about the ordinals, without having to worry about the underlying representation.