One of my tweeps sent me a link to a delightful pile of rubbish: a self-published "paper" by a gentleman named Robbert van Dalen that purports to solve the "problem" of zero. It's an amusing pseudo-technical paper that defines a new kind of number which doesn't work without the old numbers, and which gets rid of zero.

Before we start, why does Mr. van Dalen want to get rid of zero?

So what is the real problem with zeros? Zeros destroy information.

That is why they don’t have a multiplicative inverse: because it is impossible to rebuilt something you have just destroyed.

Hopefully this short paper will make the reader consider the author’s firm believe that: One should never destroy anything, if one can help it.

We practically abolished zeros. Should we also abolish simplifications? Not if we want to stay practical.

There's nothing I can say to that.

So what does he do? He defines a new version of both integers and rational numbers. The new integers are called accounts, and the new rationals are called super-rationals. According to him, these new numbers get rid of that naughty information-destroying zero. (He doesn't bother to define real numbers in his system; I assume that either he doesn't know or doesn't care about them.)

Before we can get to his definition of accounts, he starts with something more basic, which he calls "accounting naturals".

He doesn't bother to actually define them - he handwaves his way through, and sort-of defines addition and multiplication, with:

*Addition*- a + b == a concat b
*Multiplication*- a * b = a concat a concat a ... (with b repetitions of a)

So... a sloppy definition of positive integer addition, and a handwave for multiplication.

What can we take from this introduction? Well, our author can't be bothered to define basic arithmetic properly. What he really wants to say is, roughly, Peano arithmetic, with 0 removed. But my guess is that he has no idea what Peano arithmetic actually is, so he handwaves. The real question is, why did he bother to include this at all? My guess is that he wanted to pretend that he was writing a serious math paper, and he thinks that real math papers define things like this, so he threw it in, even though it's pointless drivel.

With that rubbish out of the way, he defines an "Account" as his new magical integer, as a pair of "account naturals". The first member of the pair is called a the *credit*, and the second part is the *debit*. If the credit is a and the debit is b, then the account is written (a%b). (He used backslash instead of percent; but that caused trouble for my wordpress config, so I switched to percent-sign.)

- Addition:
- a%b ++ c%d = (a+c)%(b+d)
- Multiplication
- a%b ** c%d = ((a*c)+(b*d))%((a*d)+(b*c))
- Negation
- - a%b = b%a

So... for example, consider 5*6. We need an "account" for each: We'll use (7%2) for 5, and (9%3) for 6, just to keep things interesting. That gives us: 5*6 = (7%2)*(9%3) = (63+6)%(21+18) = 69%39, or 30 in regular numbers.

Yippee, we've just redefined multiplication in a way that makes us use good old natural number multiplication, only now we need to do it four times, plus 2 additions to multiply two numbers! Wow, progress! (Of a sort. I suppose that if you're a cloud computing provider, where you're renting CPUs, then this would be progress.

Oh, but that's not all. See, each of these "accounts" isn't really a number. The numbers are equivalence classes of accounts. So once you get the result, you "simplify" it, to make it easier to work with.

So make that 4 multiplications, 2 additions, and one subtraction. Yeah, this is looking nice, huh?

So... what does it give us?

As far as I can tell, absolutely nothing. The author promises that we're getting rid of zero, but it sure likes like this has zeros: 1%1 is zero, isn't it? (And even if we pretend that there is no zero, Mr. van Dalen specifically doesn't define division on accounts, we don't even get anything nice like closure.)

But here's where it gets really rich. See, this is great, cuz there's no zero. But as I just said, it looks like 1%1 is 0, right? Well it isn't. Why not? Because *he says so*, that's why! Really. Here's a verbatim quote:

An Account is

balancedwhen Debit and Credit are equal. Such a balanced Account can be interpreted as (being in the equivalence class of) a zero but we won’t.

Yeah.

But, according to him, we don't actually get to see these glorious benefits of no zero until we add rationals. But not just any rationals, dum-ta-da-dum-ta-da! *super-rationals*. Why super-rationals, instead of account rationals? I don't know. (I'm imagining a fraction with blue tights and a red cape, flying over a building. That would be a lot more fun than this little "paper".)

So let's look as the glory that is super-rationals. Suppose we have two accounts, e = a%b, and f = c%d. Then a "super-rational" is a ratio like e/f.

So... we can now define arithmetic on the super-rationals:

- Addition
- e/f +++ g/h = ((e**h)++(g**f))/(f**h); or in other words, pretty much exactly what we normally do to add two fractions. Only now those multiplications are much more laborious.
- Multiplication
- e/f *** g/h = (e**g)/(f**h); again, standard rational mechanics.
- Multiplication Inverse (aka Reciprocal)
- `e/f = f/e; (he introduces this hideous notation for no apparent reason - backquote is reciprocal. Why? I guess for the same reason that he did ++ and +++ - aka, no particularly good reason.

So, how does this actually help *anything*?

It doesn't.

See, zero is now not really properly defined anymore, and that's what he wants to accomplish. We've got the simplified integer 0 (aka "balance"), defined as 1%1. We've got a whole universe of rational pseudo-zeros - 0/1, 0/2, 0/3, 0/4, *all of which are distinct*. In this system, (1%1)/(4%2) (aka 0/2) is not the same thing as (1%1)/(5%2) (aka 0/3)!

The "advantage" of this is that if you work through this stupid arithmetic, you essentially get something sort-of close to 0/0 = 0. Kind-of. (There's no rule for converting a super-rational to an account; assuming that if the denominator is 1, you can eliminate it, you get 1/0 = 0:

I'm guessing that he intends identities to apply, so: (4%1)/(1%1) = ((4%1)/(2%1)) *** `((2%1)/(1%1)) = ((4%1)/(2%1)) *** ((1%1)/(2%1)) = (1%1)/(2%1). So 1/0 = 0/1 = 0... If you do the same process with 2/0, you end up getting the result being 0/2. And so on. So we've gotten closure over division and reciprocal by getting rid of zero, and replacing it with an infinite number of non-equal pseudo-zeros.

What's his answer to that? Of course, more hand-waving!

Note that we also can decide to simplify a Super- Rational as we would a Rational by calculating the Greatest Common Divisor (GCD) between Numerator and Denominator (and then divide them by their GCD). There is a catch, but we leave that for further research.

The catch that he just waved away? Exactly what I just pointed out - an infinite number of pseudo-0s, unless, of course, you admit that there *is* a zero, in which case they all collapse down to be zero... in which case this is all pointless.

Essentially, this is all a stupidly overcomplicated way of saying something simple, but dumb: "I don't like the fact that you can't divide by zero, and so I want to define x/0=0."

Why is that stupid? Because dividing by zero is undefined *for a reason*: it doesn't mean anything! The nonsense of it becomes obvious when you really think about identities. If 4/2 = 2, then 2*2=4; if x/y=z, then x=z*y. But mix zero in to that: if 4/0 = 0, then 0*0=4. That's nonsense.

You can also see it by rephrasing division in english. Asking "what is four divided by two" is asking "If I have 4 apples, and I want to distribute them into 2 equal piles, how many apples will be in each pile?". If I say that with zero, "I want to distribute 4 apples into 0 piles, how many apples will there be in each pile?": you're *not* distributing the apples into piles. You can't, because there's no piles to distribute them to. That's exactly the point: you *can't* divide by zero.

If you do as Mr. van Dalen did, and basically define x/0 = 0, you end up with a mess. You can handwave your way around it in a variety of ways - but they all end up breaking things. In the case of this account nonsense, you end up replacing zero with an infinite number of pseudo-zeros which aren't equal to each other. (Or, if you define the pseudo-zeros as all being equal, then you end up with a different mess, where (2/0)/(4/0) = 2/4, or other weirdness, depending on exactly how you defie things.)

The other main approach is another pile of nonsense I wrote about a while ago, called nullity. Zero is an inevitable necessity to make numbers work. You can hate the fact that division by zero is undefined all you want, but the fact is, it's both necessary and *right*. Division by zero doesn't mean anything, so mathematically, division by zero is undefined.