Steve Whealton

The Number Wars

The number wars are between 2 and 3. I am not the first to have sensed conflict between these two numbers, nor will I be the last. Antiquity is splotched with references to religious, philosophical, and artistic notions that set the odd numbers, represented by one, three, or both; and the even numbers, usually represented by two.

It has been common in several cultures to associate even numbers with the female and odd numbers with the male. A wide variety of qualities have been sensed for twoness and for threeness.

My take on these wars is perhaps a little different from the norm. For me, it is two, not three, that represents conflict, opposition, inequality, and even "synthesis, antithesis, synthesis." Three, so often a male symbol for the ancients, is for me a standard-bearer for even-handedness, for equality, for a level playing field.

This is not some sophomoric twist upon received attitudes that entered my mind almost randomly one day and stayed around because I fancied being different from, even in opposition to, everybody else, past and present. On the one hand, I do not even remotely take it seriously to the extent of shaping any of my beliefs or attitudes in everyday life around it. But on the other hand, I have made great use of the notion as a spur to mathematical creativity and to more nearly original thinking that I would otherwise have achieved.

Let us proceed, then, to embrace the notion, perhaps the fiction, that 2 and 3 are at war. It is a war that would hardly get any press, were it to be real, for it is clear a rout. The 2's have won. So fully and thoroughly have they won, in fact, that virtually nobody has noticed the 3's at all.

Before describing threeland and many of its rules and constructs and patterns, let us review twoness. Modern computers being based on binary arithmetic is but one of the main reasons why twoness has prevailed. Most animals exhibit bilateral symmetry. Gravity imparts a highly twoish sense of "up" and of "down." Law, religions, and ethics each deal in matters of "right" and "wrong." The ancient Greeks dreamed up "The Law of the Excluded Middle" to pinpoint and almost to celebrate twoness.

Virtually all languages have twoness deeply imbedded in them. Our Indo-European languages all have elaborate systems of prefixes and suffixes reflecting synonymity and antonymity.

Computer thinking can usefully be thought of as being based on a small number of interactions between zero and one. After talking a little about zero and one themselves, we will go over three of these deeply basic and time-honored interactions.

Zero is nothing. As it happened, the notion of giving "nothing" any air-time at all (so to speak) is a fairly sophisticated one. Not until Indian mathematicians invented Arabic Numerals, Leonardo of Pisa (Fibonacci) published "Liber Abaci" and Europeans in general noticed the abacus and slowly became willing to outgrow their hidebound ways did zero become important or real in Western thought.

Zero is also the "additive identity." This means, essentially, that when you add zero to any other number, you do not change that number. This is, of course, a quality unique among all numbers, to zero.

One is not nothing. But it has many unique qualities. It is the "multiplicative identity," which means that when you multiply any number by one, you do not change that number. This quality, too, is unique to one.

Throw together these two unique numbers and you have the makings of a computer. Here are four of the most basic patterns that zero and one create within computers by being linked by an operator.

First of all is the only "unary" operator that is really possible or viable in the land of but zero and one. It is the simple NOT operator, by means of which one becomes zero and zero becomes one. We say NOT(1) = 0, and NOT(0) = 1.

Besides this unary operator, that works with but a single binary digit at a time, we look also at three "binary" operators. The use of the word, "binary," here is unfortunate, because base-two arithmetic itself is usually referred to as "binary." This confusion cannot be avoided, but we must remember not to let it confuse us. Here, we are talking about three operators that we a re calling "binary" not because we are dealing with base-two arithmetic, but rather because each of the three operators work with two items at once, like simple addition, subtraction, multiplication, or division.

First is the AND operator:

Notice now in ANDland, zeroness seems to prevail over oneness. Only when a 1 is ANDed with another 1 can the AND operator be persuaded by deliver a 1. All other combinations give 0.

Next is the OR operator:

In ORland, oneness prevails over zeroness in a way that is delightfully opposite to AND's way of favoring zero over one. Only 0 OR 0 gives 0 as an answer; all three other possible combinations give 1.

The names, AND and OR, come from logic, as do the patterns themselves, originally. The third operator, XOR, also comes from logic and from the notion of an "exclusive OR."

To understand all three names, and also to have a useful mnemonic device on hand for keeping track of their patterns, look at the original logical constructs that gave rise to the names:

With AND, remember that only if there's a 1 in the first place AND a 1 in the second place will the AND operator give you a 1 as its result.

With OR, if there's a 1 in the first place OR a 1 in the second place (OR a 1 in both the first and the second places) you will get a 1 as your result. Notice that you could apply AND reasoning to 0, rather than to 1, and also come up with a valid mnemonic for the OR operator. But to my taste, this mnemonic plays with fire. My mind would occasionally forget that my mnemonic for OR was dealing with zero, and not with one; and I would remember only the AND part of it.

XOR is distinct from OR, but in only one case. This is where the "exclusive" part comes in. For XOR, the mnemonic might work something like this:

If there's a 1 and the first place OR in the second place (but NOT both!!), then the XOR operator will return a 1. Otherwise (that is, with two zeros OR with two ones) the XOR operator will give you a 0.

Pausing here, notice that of the three, XOR is noticeably more balanced than are AND or OR. With XOR, the four answer cells are divided evenly between zeroes and ones. With AND, there were three zeroes and one one; with OR, there were three ones and one zero.

This is where the whole notion that two and three are at war becomes useful. For this is where threeland can be designed, as a full-featured realm possessing its own toolbox full of operators.

In threeland, however, certain principles will be followed, among them a complete abandonment of inequality, of oppositeness, even largely of order! Let's delve in, and see how far we can get with such an ambitious project.

The first step is to abandon numbers altogether. We will not make use of the three digits of ternary arithmetic, the set {0, 1, 2}. This set gets a lot of air time here and there, but not here.

Instead of {0, 1, 2}, we will use the set, {a, b, c}. We could go further and use a set with three completely unrelated items, such as {%, @, #}, but there are good reasons for not doing this. For one thing, keeping track of our purposely motley crew of symbols would continually be difficult. More important, we ourselves are children of twoland, and we all think better if there is some orderliness in our objects and in our tools.

So we make a compromise with convenience and choose the set, {a, b, c}. Before we begin, however, we understand that in no sense is "a" necessarily greater than, earlier than, or more than, b, or c. It is, in fact, first of the three. But we must always keep in mind that over on the three side of things, concepts of order and primacy are to be avoided, wherever possible.

So unlike the set, {0, 1}, which carried along with it many, if not all, of the unique qualities of 0 and of 1, our set, {a, b, c}, brings with its three members very few qualities. And one of those qualities, the order in which we all so familiarly place the members of the set, {a, b, c}, will be ignored, whenever possible.

What we will do now is create patterns and operators for our threeworld and for the set, {a, b, c} that do two things at the same time. On the one hand, they will mimic, at least outwardly, many of the constructs familiar from twoland of yore. At the same time, however, they will permit no encroachment of hierarchy!

As with our quick perusal of four of twoland's operators, we go first to the unary. But in threeland, a unary operator hasn't got it so easy! Here, there's no one, obvious, "other" choice to go to every time. If you're trying to apply a unary operator to "a," for example, you can choose to move to "b," or you can go to "c."

It's not as obvious or as trivially simple as it was with zero and one. There, at one you had noplace else to go but to zero, and a zero you had noplace else to go but to one.

By far the simplest thing to do in threeland is to have not one but two unary operators. One of them drives the members of our set around and around in one direction; the other one drives them around in the other direction.

Imagine a triangle. At its corners are a, b, and c. As we travel around the triangle from a to b to c and back to a and then again to be, and so on, we are circulating among {a, b, c} "in one direction," so to speak.

Go, by contrast, from a to c to b to a to c to b, over and over in that order, and we are circulating among {a, b, c} "in the other direction. We can draw a triangle and circulate around it clockwise, or counterclockwise, if we like.

Returning to unary operators, one can be said to move to the right, and one to the left. To see how the ideas of "right" and "left" are useful, spread out several cycles of the "abcabcabcabc" pattern running from left to right.

To use the "right" unary operator, you begin anywhere in the spread and move one to the right. If you're at any "c" in the list and move one to the right, you're at an "a." At any "b," a move to the right takes you to a "c." At any "a," a move one to the right brings you to a "b."

For the "left" unary operator, you do the opposite. At any "b," a move to the left brings you to an "a." At any "c," a move to the left brings you to a "b." At any "a," a move to the left brings you to a "c."

Notice that nowhere is there any hierarchicality.

We are ready to move to binary operators in threeland. They will match up two of the three letters at a time, not necessarily different letters. Recall that in twoland, 0 AND 0 was legal, just as 1 XOR 1 was legal. So here in threeland, a should be combinable with a; b with b, and c with c.

Before actually designing or deciding upon any operators for threeland, let us first draw up the empty chart that they can all be shown off in. As with base-two operators, the letters running along the left come first, and the letters running across the top come second.

This empty chart can also be seen as a way of looking at all 9 of the possible two-letter combinations that can be made from the alphabet, {a, b, c}. These 9 two-letter words are the following:

Already, we can see that 3 of the 9 feature the same letter twice: "aa," "bb," and "cc." The other six do not. This fact is suggestive. It provides a handle, if we choose to seize it, for beginning to create our operator.

Perhaps the simplest thing to do is to let "aa" give rise to "a," "bb" give rise to "b," and "cc" give rise to "c." Doing this has an intuitive feeling of rightness or propriety.

This leaves us with 6 other combinations to decide. Remembering how badly we want everything to come out even, we might also decide that having used up one "a," one "b" and one "c" already, we have precisely two of each left.

We have made use of sameness. Now, let us bring the concept of "other," or perhaps of "remaining" into play. Each of the six two-letter combinations can be seen to omit one, and only one, of the possible three letters. Why not choose that uniquely omitted letter for each of the six? If we do that, will everything come out even.

Looking at the chart, we see that everything exhibits just about as much evenness and balance as can be imagined.

We have now defined our first operator for threeland! It makes virtually no use of numercial concepts; relying instead solely on "same" and "other." No matter what our three entities were, it would always be possible to determine whether a two-letter word featured the same entity twice or not. If not, it would likewise always be possible to choose the other, the remaining, the missing, entity.

It is not yet time to name this operator. The name we eventually give to it will make a lot more sense if we define a few more operators, first.

In coming up with all of this many years ago, I actually did defise the operator described above first. In fact, I thought it through in much the way outlined above. Later on, I began to think about the notion of a complementary operator.

Suppose, for example, that you were looking at an elementary algebra textbook from threeland. It might contain a very simple problem that featured the operator defined above. Just about the simplest possible algebra problem using that operator would be one that might read as "XY = c," where "X" and "Y" are the unknowns, and that "c" at the end is viewed as a constant. In "real" algebra from the twoland that we have all learned and algebrated in, a comparable problem might be "X+Y=72." In the deeply basic core of twoland that we have discussed above, a comparable problem might be "X AND Y = 0."

Solve for X and Y. In all cases, there isn't enough information to solve for X and Y. But also in each case shown, we can use the information provided by the assertion to narrow down the possible values for X and for Y.

So with our threeland algebra problem, "XY = c," we can narrow down the possible values for X and for Y. The fact is that both X and Y are free to take on any of the three allowable values from the master set {a, b, c}, but once one value is chosen, the other value becomes fixed. "ab=c," "ba=c," and "cc=c" are the three options.

For some time after I dreamed up the operator now in hand for threeland, I felt the creative urge to dream up other operators as well. The algebra problem idea, as outlined above, finally pushed me through.

We have seen that there are three candidate combinations for the values of X and Y. One candidate is X=a, Y=b. Another is X=b, Y=a. The third is X=c and Y=c. After mulling over these facts for some long time, I began to decide that I wanted somehow to characterize each of the three candidate combinations in a definitive way. No doubt my mind turned in this direction by observing that one of the three involved a doubleton. Suppose, I thought, I knew that "XY=c," and I also know that the answer was a doubleton answer. That would be enought to tell me that X=c and Y=c, for that is the only doubleton combination that will give c.

It didn't take too much longer to notice that when X=a and Y=b the relationship between the "a" and the "b" were strongly suggestive of the "right" unary operator; whereas when X=b and Y=a, the relationship strongly suggested the "left" unary operator.

As it worked out, this combination of the "One doubleton-or-Two-singletons?" question, and the "left unary or right unary" question sufficed. I chose to designate all doubleton equations with the letter, "a," all "right unary" equations with the letter, "b," and all "left unary" equations with the letter, "c." Here is the chart:

Examine, also, this operator, with its patterns, alongside the original, with its patterns. There's a sort of mirror symmetry, there. One of the two is associative, but not commutative. The other is commutative, but not associative. Neither operator qualifies the set and its operator as a group.

Before going further, let us pause to reflect that the letter, "a" was chosen for doubletons arbitrarily. We could just as easily have chosen "b" or "c" to indicate a doubleton. The same arbitrariness chose "b" for "right unary" and "c" for "left unary." All of these arbitrary decisions means that there are six distinct and equally valid ways of manifesting this operator.

Having wrested a complimentary operator, as I chose to think of it, out of my much-beloved original, I was now basking in self-generated glory. There was no one to brag to, but that was nothing new.

My threeland was beginning to become populated. The colony was growing and prospering. It featured equality and it had two unary operators and 7 binary ones.

Before I got much further, however, I began to think about how very complementary my one, original operator was to the new set of six. It pleased me to imagine that on one side of this divide I could arrange certain qualities, and on the other side, other, complementary, qualities.

After much mulling, I finally arrived at a characterization that pleased me. It has, in fact, proved very useful indeed during the years that have followed. I choose to call the two sides of this dichotomy (!!??!?!?!) NAMIT and USIT. To see how the earlier, single, operator "uses" distinctions whereas the complementary set of six later operators "name" distinctions, let us examine what happens with doubletons on each side.

In the first instance, "aa" became "a," "bb" became"b," and "cc" became "c." "Sameness," or "The doubleton feature" was utilized in homing in on the particular letter that was present twice within the original pattern.

In the second case, "aa" became "a," "bb" became "a," and "cc" became "a." Here, the letter "a" can be seen to name "sameness" or "the doubleton feature."

So the first-described operator became the mother of all "usit" patterns, while the second operator became the mother of all "namit" patterns.

In strictest terms, the number wars between 2 and 3 go no further than this. But back in the world of numbers, threness can have its say. No longer can it enjoy the complete freedom from hierarchy and inequality that we have had with our usit and namit operators, but there are many interesting patterns ahead.

First, we no longer limit ourselves to the set, {a, b, c}, where there is no primacy of any kind. We are back in numberland, and so we now focus upon the set, {0, 1, 2}. Twoness has reasserted itself with a vengeance. There are one and zero, the very paradigns of inequality.

We begin by noting that we are dealing with numbers, just as a base-two computer deals with numbers. But now our numbers exist within the computer at three voltage levels, not at the customary two. We cannot work out any of the technical details of how this can be done. What we can do is to invent a few further operators.

Our first step will be to import the operators that we have created, above. The "left" and "right" operators, especially, will be useful.

But since complete equality is no longer mandatory, we can now look at a set of three rather lopsided unary operators in base-three arithmetic. I call them "hold-zero," "hold-one," and "hold-two." The very names almost fully describe the operators.

With the "Hold-Zero" operator, zero becomes zero while one and two switch back and forth. With "Hold-One," one stays the same and zero and two switch places. "Hold-One" can be seen as the base-three equivalent of base-two's simple negation. If switching a zero and a one can be seen as "subtracting from one," then performing a "Hold-One" operation can be seen as "subtracting from two."

"Hold-Two," predictably, keeps two the same and switches zero and one.

Add the identity operator, which keeps everything the same as it was, and all six combinatorially possible unary operators for any set of size three have been invented. There is nowhere else to go, not and remain consistent.

Moving up to binary operators for base-three, the first impulse is to try to clone, somehow, the AND, OR, and XOR operators from base-two arithmetic. Here is how that can be done, along with a run-down of how precise the cloning is and some comments about how useful the operators are:

How can you create an AND operator in base three? One way would be to consult multi-valued logic. But my method is more direct and more intuitive, thougth perhaps less rigorous. I decided to try to clone as many features of the AND operator from base-two arithmetic as possible.

The first feature that I wanted to keep can be shown by the fact that 1AND 1 is 1, and also that 0 AND 0 is 0. Any AND operator in base three ought to mimic this feature. So 0 AND 0 will be 0, 1 AND 1 will be 1, and 2 AND 2 will be 2.

Next, I notice that with 1 AND 0, 0 AND 1, and 0 AND 0, (the other 3 combinations), the result can be seen always to be the smaller of the two numbers present. With 0 AND 0, one looks at 0 as being the smaller of 0 and 0.

So perhaps a clone of this idea can be put to use in creating a consistent and satisfying AND operator for base three. Here goes:

Here, 0 is the lesser of (0 AND 0), of (0 AND 2), of (1 AND 0), of (0 AND 2), and of (2 AND 0). 1 is the lesser of (1 AND 1), of (1 AND 2), and of (2 AND 1). 2 is the lesser only of (2 AND 2).

All in all the complete AND chart for base three bears a comfortable resemblance to the original AND chart in base two. It feels like an outgrowth. One can imagine using the two charts to devise comparable AND charts for base four, base five, and higher.

Further, OR now almost solves itself. Again, 0 OR 0 should be 0, 1 OR 1 should be 1, and 2 OR 2 should be 2. In precise contrast to the AND chart, above, all of the OR combinations between any two unequal elements should result in the larger of the two.

So 2 results because it is the greater of (2 OR 2), of (2 OR 1), of (2 OR 0), of (1 OR 2) and of (0 OR 2). 1 results because it is the greater of (1 OR 1), (1 OR 0) and (0 OR 1). 0 will result as the greater of (0 OR 0).

The XOR operator isn't so easy to piece together by using similar tricks. Finally, one can observe that in base two, XOR is equivalent to addition, modulo two. So in base three, XOR can be addition, modulo three.

Here is where the one USIT operator and the six NAMIT operators can be inserted. When USIT and NAMIT notions collide with numbers, interesting patterns can result.

One can go above binary operators, throwing together three, four, or any number of elements at a time. In base two, one can imagine two ternary operators that work on three bits at a time. One is called "maj," and it returns the winner of a simple head-count contest between zeroes and ones. The other, called "men," returns the loser.

In base three, a somewhat new kind of lopsided operator appears. It can be said to be of the "namit" variety. Here is how it might be worked out.

Consider the 27 possible three-letter combinations over the alphabet {0, 1, 2}. Using terminology from card games, one can see that of that set of 27, 3 feature three of a kind, 18 feature a pair, and 6 feature one each of the three possible letters. This is an unequal division, but it is a definitive one.

One can choose to label the tripleton cases, "a," the doubleton cases, "b," and the other cases, "c." Just as with the original namit operator, there are 6 distinct ways to label these three possibilities.

It is not possible to create a completely consistent head-count-only usit pattern for this case, but it will be useful to look into the reasons why.

The tripleton case is easy enough to work with. The tripletons simply become the letter that they feature three times.

The eighteen doubletons are not as easily dispensed with. The most obvious thing to do would be to award each of them to the letter that is doubled. But it is also possible to award each of them to the letter that appears only once. This presents a choice, but at least once this choice is made, one can proceed to follow the rules and always make a definitive decision. Every doublteon pattern, has not only a doubleton, but also a singleton. So in either case one can always choose.

In fact, there is yet a third equally definitive choice available here. For each of the eighteen doubtleton patterns, there is also one and only one letter missing. One can choose that "missington" letter just as definitively as one could choose the singleton or the doubleton.

The problem comes with the six patterns that have no pairs and no tripletons. How can one choose one of the three digits over the two others?

The answer is that, without abandoning the head-count-only criterion, one cannot make such a choice.

Sometimes I am willing to abandon my HCO criteria. Sometimes, I will create one or more rules that will allow me to choose one letter, out of the three distinct letters that appear, according to which letter is first, second, or third, for example.

But abandoning HCO is done only reluctantly. Normally, I would choose to have no USIT pattern for ternary operators in base three.

Throwing together four things at a time might seem likely to add more indecisiveness, or at least a lot more complexity. Complexity there is, perhaps; but happily enough the situation turns out to be less ambiguous, not more, than was the ternary case.

There are 81 combinations possible when combining four base-three digits at a time. Of those 81, 3 are four-of-a-kind, feature one tripleton and one singleton, feature two pairs, have but one pair. Notice that all 81 of these breakdowns are in some real sense asymmetrical. There is no case here comparable to the 6 ternary patterns that featured one each of the three digits.

The 3 cases of four-of-a-kind (quadrupletons?) are easily decided; the letter appearing in such profusion can be chosen. In fact, neither of the two missing letters has any more claim than the other. So the quadrupled letter is the only HCO choice.

The tripleton cases again give almost an embarrassment of choices. One can select the tripleton letter, the singleton letter, or the missington letter. With two pair, only the missington works. There is no HCO way to choose between the two letters that each appear two times. Similarly, with a single pair, one cannot choose between the two singletons, there is no missington, and so the doubleton wins by default.

Thus with four elements thrown together at a time in base-three, there are three distinct USIT operators.

It is over on the NAMIT side that problems appear in this case. The problem is not ambiguity, but rather one of too many categories. If we want our NAMIT operator to come up with "a," "b," or "c," then we're in trouble.

For there are four different patterns, here: quadrupleton, tripleton-singleton, doubleton-doubleton, and doubletin-singleton-singleton. One solution is to allow four letters. I sometimes do this, but only when I also shift around my entire way of working to accommodate the fact that no longer am I producing the very same letters that I'm working with.

The other way of coping with this kind of problem is to collapse categories together.

Often when collapsing, one can put categories that have few members together, thus equalizing somewhat the number of "a" "b" and "c" results.