Surreal Arithmetic (Edited rerun)

Mar 31 2007 Published by under Numbers

In my last post on the surreals, I introduced how the surreal numbers are constructed. It's really fascinating to look back on it - to see the structure of numbers from 0 to infinity and beyond, and realize that ultimately, that it's all built from nothing but the empty set!

Today, we're going to move on, and start looking at arithmetic with the surreal numbers. In this post, I'm going to go through the basic definition of addition, subtraction, and multiplication of surreal numbers. Division will have to wait for a later post; division is quite a subtle operation in the surreals.

Transfinite Induction

Before getting into the actual operations of surreal arithmetic, I need to pause for a moment, and talk about the fundamental mechanism of how most proofs and constructions on the finite numbers are structured. It's called transfinite induction.

Transfinite induction is induction based on the use of ordinals. It uses the same basic mechanism as good old-fashioned mathematical induction (a la the 5th Peano axiom), only instead of doing the induction over the numbers directly, the induction is done on the ordinals - that is the birthdays - associated with sets of numbers. So what transfinite induction does is say:

  • If I can prove that:
    • X is true for things with ordinal 0;
    • if X is true for ordinal N, then I can prove that X is true for ordinal N+1;
  • Then X is true for all ordinals.

While I didn't say this explicitly in the previous post, the way that the definition of "≤" works for the surreal number is by induction over the ordinals:

  • The set containing the surreal 0 has ordinal 0 in the surreals. 0≤0 is true, because there is nothing in its right set (∅) that is not less than or equal to anything in its left set; and there's nothing in its left set that is greater than or equal to anything in its right set.
  • Ordinal 1 for the surreals is the set { -1, 1 }. Does ≤ work for -1, 0, and 1? Check it through; it does.
  • Since each new ordinal introduces a set of numbers constructed from the previous ordinals; and the construction rule requires the values in a new ordinal to be built from valid values of previous ordinals, then the new values will also work correctly with "≤".

All of the other arithmetic on surreals works using definitions that similarly depend on transfinite induction.

Addition with Surreal Numbers

Addition for surreals is pretty straightforward:

If x = { XL | XR } and y = { YL | YR } are surreal numbers, then x+y = {XL+y ∪ x+YL | XR+y ∪ x+YR} where:

  • if X is a set of surreal numbers, and y is a surreal number, then X+y = {x+y|x∈X}.

Once again, take note of the fact that this definition is recursive, and applies to all surreal numbers by transfinite induction.

So, to translate into english a bit: to add two surreals x and y, take the left side of x, and add it each member of it to y; take the left side of y, and add each member of it to X. Same basic idea for the right side.

So, for example, let's look at 2 + 3.

  • {1|} + {2|} = {{1}+{2|} ∪ {1|}+2 | ∅ ∪ ∅ } =
  • {{{0|}}+{2|}) ∪ {{0|}+{1|}} |} = {{3|}} ∪ {2|}|} = {3,4|} = {4|} = 5.

To get subtraction into the picture, we need to define negation for surreal numbers:

  • -0 = 0;
  • if x={ XL | XR }, then -x = { {-xr | xr∈XR} | {-lx | xl∈XL}}

And now, we can define subtraction. For any two surreal numbers x and y, x - y = x + (-y)

Multiplication with Surreal Numbers

The definition of multiplication is very similar to the definition for addition, only a bit messier:

If x={XL | XR } and y = {YL | YR }, then z = x×y = { ZL | ZR } where:

  • ZL = (XL× y + x×YL - XL×YL) ∪ (XR×y + x×YR - XR×YR)
  • ZR = (XL× y + x×YR - XL×YR) ∪ (XR×y + x×YL - XR×YL); and
  • if S and T are sets of surreals (e.g., XL above), then S×T= { s×t | s ∈ S, t ∈ T };
  • if t is a surreal and S is a set of surreals, then t × S = S × t = { t }×S. (Note that this implies that if S is ∅, then t×S={∅|∅} = 0; and therefore S×T=0 if S or T = ∅.)

To make it easier to write things out, we can break it up and describe x×y in terms of four components: l1, l2, r1, and r2, where:

  • l1=XL× y + x×YL - XL×YL
  • l2=XR×y + x×YR - XR×YR
  • r1=XL× y + x×YR - XL×YR
  • r2=XR×y + x×YL - XR×YL

Then in terms of those components, x×y={l1∪l2 | r1∪r2 }

Multiplication is a bit hard to follow, so we'll work through a couple of examples.

Let's start with 0×1. In surreal format, that's: 0 × {0|}. We'll look at l1 first:

  1. l1 = ∅×{0|} + 0×{0} - ∅×{0} =
  2. ∅ + 0×{0} - ∅×{0} = ∅

The same thing happens to all four terms: 0 always contributes an ∅ component, which turns every term it's a part of into ∅. In fact, the above works for any number multiplied with zero: zero's part of every combination is always ∅, which eliminates the contribution from the other number, so the result will always end up being {∅ | ∅} = 0.

How about 1×1? That's {0|}×{0|} =

  1. l1 = {0}×{0|} + {0|}×{0} - {0}×{0} = {0} + {{0|}×0} - {0} = {{0|} × 0} = {0}.
  2. l2 = ∅×{0|} + {0|}×∅ - ∅×∅ = ∅
  3. r1 = {0}×{0|} + {0|}×∅ - {0};×∅ = {0} + ∅ - ∅ = ∅.
  4. r2 = ∅×{0|} + {0|}×{0} - ∅×∅ = ∅ + 0 + ∅ = ∅
  5. So 1×1 = { {0} ∪ ∅ | ∅ ∪ ∅ } = {0|} = 1.

One last example: 2×2, aka {1|}×{1|}. I'm actually going to cheat with this one. I've written some Java code to do basic surreal manipulations, so I'm going to let it spit out the pieces.

  1. L1 = { {{{{{|0}|{0|}}|{{0|}|}}|{{{0|}|}|}}|{{{{0|}|}|}|}} }
  2. L2 = ∅
  3. R1 = ∅
  4. R2 = ∅

So 2×2 = { {{{{{|0}|{0|}}|{{0|}|}}|{{{0|}|}|}}|{{{{0|}|}|}|}} | } =

  • {{{{{-1|1}|{1|}}|{{1|}|}}|{{{1|}|}|}}|} =
  • {{{{0|2}|{2|}}|{{2|}|}}|} =
  • {{{1|3}|{3|}}|} =
  • {{2|4}|} =
  • {3|} =
  • 4

See, it works!

Why should I care?

The first fascinating thing about surreal numbers they're such a simple construction - and yet they manage to capture the richness of behavior of the real numbers. And they do in a way that remains consistent with the reals, while also giving us a handle on playing with infinitely large and infinitely small values. They're a lot like Church numerals in lambda calculus, where you start with one trivial little thing: a surreal number with two empty sets -and you can create everything, from 0 to infinity and beyond!

Ultimately, all of the definitions of arithmetic reduce to nothing more than a bunch of recursive set unions; and yet, somehow, using nothing but those set unions, we can get absolutely everything to work exactly the way we expect real numbers to work.
When you think about it that way - we've built up everything we need to be able to do any algebraic operation, using nothing but the empty set and set unions - it's just amazing.

And there's even more to it than that. As you'll see later, the surreals are actually a subset of a construction called games; and when you expand from surreal numbers to games, all sorts of wonderful things can happen. It gives us a way of talking about all sorts of things in terms of simple number-like values.

No responses yet

  • Ørjan Johansen says:

    If I can prove that:
    X is true for things with ordinal 0;
    if X is true for ordinal N, then I can prove that X is true for ordinal N+1;
    Then X is true for all ordinals.

    NOOO!!! That is just ordinary induction, and it cannot pass to an infinite ordinal. What you need is, "If X is true for all ordinals smaller than N, then X is true for N." And you don't need a special rule for 0.

  • Doub says:

    In the paragraph about addition, I think that there are a lot of typo errors: upper/lower case inversion, character inversion (lx for xl), maybe missing brackets.
    I guess that's it's readable for you because your brain know what to expect and hides the typo errors, but for people that are introduced to it extreme rigor in notation is the only way to keep us on track. I could check that with other sources on the net, but the fun of discovery is gone.

Leave a Reply