Point Nine Repeating

Have you ever seen this equation?

$$0.\overline{999} = 1 \tag{1}\label{eq1}$$

It's a simple equation: no complex numbers, no trigonometry, not even a variable. But if you have seen it, you probably know just how heated arguments about it can get. I think this is interesting: not so much the equation itself, but the arguments people make about it and where they fall short.

Let's talk about that.

The common arguments

Before we can talk about why the common arguments are interesting, we should recap what those arguments are. First, let's look at a couple of ways that people argue that equation \(\eqref{eq1}\) is correct. One of the most popular, and the way it was explained to me when I first encountered it, is based on solving this equation:

$$10 \times x - 9 = x \tag{2}\label{eq2}$$

A little basic algebra shows that the solution to this equation is \(x = 1\):

$$\begin{align} 10 \times x - 9 &= x \\ 10 \times x - x &= 9 \\ (10 - 1) \times x &= 9 \\ 9 \times x &= 9 \\ x &= 1 \end{align}$$

Consider what happens though when we substitute \(x = 0.\overline{999}\) into equation \(\eqref{eq2}\):

$$\begin{align} 10 \times 0.\overline{999} - 9 &= 0.\overline{999} \\ 9.\overline{999} - 9 &= 0.\overline{999} \\ 0.\overline{999} &= 0.\overline{999} \end{align}$$

Thus, \(x = 0.\overline{999}\) is also a valid solution to equation \(\eqref{eq2}\). If we accept that a linear equation can have at most one solution, then we must conclude that the two solutions are identical—that is, that equation \(\eqref{eq1}\) is true.

Not convinced? How about this argument:

$$1 = 3 \times \frac{1}{3} = 3 \times 0.\overline{333} = 0.\overline{999} \tag{3}\label{eq3}$$

No variables, no uniqueness tricks, just straightforward arithmetic. Nevertheless, this is not enough to convince some folks. Here are a couple of arguments you might hear as to why equation \(\eqref{eq1}\) is incorrect:

"\(0.\overline{999}\) approaches but never reaches \(1\)." \(\tag{4}\label{eq4}\)

"\(0.\overline{999}\) is infinitesimally smaller than \(1\); the difference is \(0.\overline{000}1\)." \(\tag{5}\label{eq5}\)

These arguments lack the mathematical flair of equations and algebra, but that in and of itself doesn't mean they're wrong! How, then, do we decide which arguments are right and which ones aren't?

Convincing but wrong

Regardless of whether you find the above arguments convincing (personally, I find they all leave something to be desired), it's clear that the people making these arguments are convinced by them, or at least of their conclusions. It's also clear that they can't all be right; either equation \(\eqref{eq1}\) is correct or it isn't—right? We must conclude then that at least one of these arguments is convincing, but wrong. What are the implications of that?

Mathematics is useful in part because it lets us give confident answers to true-or-false questions. Can I afford a vacation this year? The math says yes. Is there enough space in my living room for a new recliner? The math says no. If we find that the methods of mathematical logic give a convincing but wrong answer to even one question, we might reasonably ask: how can I be certain that any of the answers these methods produce are correct? In math jargon: how do we ensure that mathematical logic is consistent?

There is a second, subtler problem lurking behind the question of consistency: how do we know that a given question has an answer at all? What if the question is meaningless? What if the question is so vague that any answer at all could be justified with enough effort? In math jargon: how do we ensure that our questions are well-defined?

Modern mathematics attempts to address the problems of consistency and well-definedness with a strategy called formalism. The gist of it is this: rather than trying to press natural language into the service of defining precise logical constructs, we work in a synthetic language specifically built to be consistent. Logical questions are posed as propositions and logical arguments to their truth are expressed as proofs. Propositions are taken to be well-defined and proofs correct purely by virtue of their adherence to the structural rules of that synthetic language.

In fact, modern mathematics is not built on a single synthetic language but many: first order logic, higher-order logic, set theory, and various type theories all have their place in giving mathematics a rigorous and precise foundation.

Denotations and semantics

With these problems in mind, it's clear that we need to take a step back from equation \(\eqref{eq1}\) and pin down exactly what mathematical idea it's really trying to express. The first thing to decide is what kind of mathematical objects we're talking about in the first place. The obvious answer is "numbers:" \(1\) is a number, and so is \(0.\overline{999}\). Or are they?

\(1\) is a number, the first positive integer. But it's also an Arabic numeral, one that serves to name or denote that number. It's such a subtle distinction that it may not be clear that it even is a distinction, but consider instead:

$$100$$

What is this? Pixels on your screen, really. But those pixels are arranged so as to display three numerals: \(1\), \(0\), and \(0\). And those three numerals together in that order denote the number one hundred. The distinction being made here is that between a symbol and the thing the symbol denotes. A general scheme for associating symbols with their denotations is a kind of semantics.

But why should we care about any of this? Why does it matter that the "numeral" \(1\) is distinct from the "number" \(1\) if at the end of the day we use them interchangeably? It matters because the argument people are having when they discuss equation \(\eqref{eq1}\) has nothing to do with equality or the number \(1\) at all: it's really an argument about the semantics of decimal expansion.

\(0.\overline{999}\) is a symbol (or if you prefer, collection of symbols) that denotes a number. Which number does it denote? Is it an integer? A rational number? A real number? Okay, we need to take another step back: what is a number?

Numbers

Hopefully you remember from school that there are different kinds of numbers: integers, fractions, irrational numbers, etc. In mathematics we formalize these kinds of numbers in a cumulative hierarchy:

$$\mathbb{N}\subset\mathbb{Z}\subset\mathbb{Q}\subset\mathbb{R}\subset\mathbb{C}$$

The \(\subset\) symbol denotes a subset relationship: every element of the set on the left is an element of the set on the right. In other words: every natural number is an integer; every integer is a rational number; every rational number is a real number; and every real number is a complex number.

The integers, rationals, and complex numbers are easy enough to formalize. Consider addition on natural numbers: for any natural numbers \(n\) and \(m\), \(n + m\) is also a natural number; in other words, addition is closed over natural numbers. Subtraction, however, is not: \(3 - 5\) is not a natural number, despite the fact that both \(3\) and \(5\) are. The act of extending a domain like the natural numbers with new elements to make an operation like subtraction closed is called closure, and in fact this specific example yields the integers. The closure of division over the integers and of the square root over the reals yield the rational1 and complex numbers, respectively.

The natural numbers and reals are harder to construct. Constructing the reals requires some heavyweight analytical machinery that we fortunately don't need because we don't need real numbers to solve this problem at all. Constructing the naturals is usually done through some variation on the Peano axioms. We don't really need to hash out the full formalization, but the essence is this:

  1. \(0\) is a natural number.
  2. If \(n\) is a natural number, then \(S(n)\) (the "successor" of \(n\)) is a natural number.

In this view, \(1\) is just a convenient shorthand for \(S(0)\), \(2\) is shorthand for \(S(S(0))\), and so on.

Induction: doing things with natural numbers

Having just defined natural numbers, now is a good time to bring up a tool that we're going to need later: induction. If Peano's axioms are how you produce natural numbers, then induction is how you consume them: all at once.

Suppose we have a predicate \(P(n)\), some statement about the natural number \(n\). If we want to prove that statement, we generally need to know what \(n\) is. For instance, if \(P(n)\) is the statement "\(n\) is less than one," it's very important that we know whether or not \(n\) is zero. Sometimes, though, we want to prove \(P(n)\) for all \(n\)2. Induction lets us do this in a principled way, and it works like this:

We start by proving the base case, \(P(0)\). This is usually straightforward: plug in \(0\) and simplify until you reach a tautology (a statement that is trivially or axiomatically true). Then, we prove that for all \(n\), if \(P(n)\) is true, then \(P(n + 1)\) is true.

It's this second step that can be tricky. We are allowed to assume \(P(n)\) is true as a hypothesis, but that's the only case we're allowed to assume, and we don't know what \(n\) is. Usually, we'll start manipulating \(P(n + 1)\) until we find a subterm equivalent to \(P(n)\) then use the induction hypothesis to rewrite that subterm. If we're clever about how we choose the induction hypothesis and where we find the \(P(n)\) subterm, the rest of the problem usually solves itself. You'll see what I mean when we discuss \(\Delta(x)\) later.

Why go to all this trouble of splitting our proof up into different cases and using special hypotheses? Well, we're trying to prove an infinite number of things at once, and as we'll see later the languages of mathematical logic generally don't allow for such infinities. Induction is a principled way that the base logic of mathematical logic can be extended to allow certain classes of self-referential proofs and definitions to be expressed without admitting ill-formed definitions or inconsistent proofs.

Decimal expansions

Note that the preceding section makes no mention of decimal expansions. This is because decimal expansions belong firmly in the domain of symbols; they are not numbers, but names for numbers. So: which number does a decimal expansion name?

To be absolutely clear about the nature of the question we now face: we are not trying to deduce the properties of decimal expansions from a given definition; our task is to choose a definition, to translate the imprecise, intuitive notions we hold about decimal expansions into something more rigorous. There is not necessarily one single correct choice here! But proceed we must.

The easiest place to start is with finite decimal expansions in the range \([0, 1)\); we can generalize this to all finite decimal expansions by adding the whole-number part at the end. Consider the decimal expansion:

$$0.123$$

We've been given a sequence of numerals, and we want to turn that into a number. But to do that, we're going to have to formalize what a sequence is. The standard formalization of a sequence is a function from \(I\) to \(S\), where \(I\) is the set of indices and \(S\) is the set of elements. Practically speaking, \(I\) is usually \(\mathbb{N}\), the set of natural numbers, or as in our case a finite subset of \(\mathbb{N}\), for which we'll use the notation \(\mathbb{N}_n\) to denote all natural numbers less than \(n\). \(S\) in our case is \(\mathbb{N}_{10}\), the set of decimal numerals \(\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\}\).

So we need a function \(f\) which takes as an input a sequence (function) \(seq : \mathbb{N}_n \to \mathbb{N}_{10}\) and produces a... number. Which kind of number? Well we know which number \(f(0.123)\) should produce: \(\frac{123}{1000}\). So rational numbers sound like the right choice of codomain. How do we define \(f\) so as to produce the right number?

Each numeral in a decimal expansion contributes a value determined by the value of the numeral and its place in the expansion: the \(1\) in \(0.123\) contributes the value \(\frac{1}{10}\), the \(2\) contributes \(\frac{2}{100}\), and the \(3\) contributes \(\frac{3}{1000}\). In general, the numeral \(x\) at place \(i\) contributes the value \(\frac{x}{10^{i+1}}\), where \(i = 0\) is the first place to the right of the decimal point. Once we have these values, we can add them:

$$f(0.123) = \frac{1}{10^1} + \frac{2}{10^2} + \frac{3}{10^3} = \frac{123}{1000}$$

That's all well and good, but how do we write out a definition of \(f\) that works on a sequence \(s\) of any length \(n\)? There is a standard mathematical notation for this called a sum:

$$f(s) = \sum_{i=0}^{n-1} \frac{s(i)}{10^{i+1}}$$

which is equivalent to repeated addition for each value of \(i\) from \(0\) to \(n-1\), inclusive:

$$f(s) = \frac{s(0)}{10^{0+1}} + \frac{s(1)}{10^{1+1}} + \cdots + \frac{s(n-1)}{10^{n-1+1}}$$

So there you have it: a formalization of decimal expansions. We're ready to pin down, once and for all, exactly what \(0.\overline{999}\) is, right?

Well... no. We've successfully formalized finite decimal expansions. But \(0.\overline{999}\) isn't a finite decimal expansion. That's the whole point. We need to formalize infinite decimal expansions. How do we do that? It is tempting to appeal to infinity and just stuff it into our existing formula3:

$$f(s) = \sum_{i=0}^{\infty} \frac{s(i)}{10^{i+1}}$$

The problem with this is that we haven't justified this kind of sum as well-defined. In fact, we haven't done that for finite sums, either, so let's start by solving that problem. We'll appeal to induction on natural numbers by defining \(\sum_{i=0}^{n} g(i)\) as follows:

  1. If \(n = 0\), then \(\sum_{i=0}^{n} g(i) = g(0)\).
  2. For all \(n \in \mathbb{N}\), if \(\sum_{i=0}^{n} g(i) = x\), then \(\sum_{i=0}^{n+1} g(i) = x + g(n+1)\).

Note that in the definition of \(f\), \(g(i) = \frac{s(i)}{10^{i+1}}\).

Here's the crux of the problem: \(\infty\) is not a natural number. This inductive definition does not work for infinite sequences. We need an alternate definition if we want to get to the root of infinite decimal expansions.

Infinite sums

How do you add infinitely many terms together? The definition of finite sums appeals to our intuitive notions about computation: just expand the sum into a huge expression consisting of a lot of addition operators, then plug and chug. Why can't we do that for infinitely many additions, too?

The answer is: the syntactic rules of mathematical logic do not allow it. In principle, the rules could be made to allow infinitely large expressions, but consider something like this:

$$1 - 1 + 1 - 1 + 1 - 1 + \cdots \tag{6}\label{eq6}$$

What possible meaning could we give to this expression? If we try to compute the result, maintaining an accumulated value that we add to and subtract from as we encounter each term, we'll find that it only ever takes on the values \(1\) and \(0\)... but we'll never be able to produce a final answer, and even if we could it isn't clear which answer would be correct.

Remember that formalism aims to circumvent problems like this by ensuring that any syntactically valid expression is well-defined. An infinite expression like this cannot necessarily be given a well-defined interpretation, so our formal logics simply do not give any affordance for infinite expressions in their syntax.

Is all hope lost then? Well, not quite. We can't add infinitely many terms, but we can add arbitrarily many terms. We can add ten, or a hundred, or a million billion, or ten to the power of a googolplex terms. As long as the number of terms is finite, it's well-defined. But how does this help us?

Contrast expression \(\eqref{eq6}\) with this simple expression:

$$0 + 0 + 0 + 0 + 0 + \cdots$$

If every term in this expression is zero, surely it's sensible to say the overall sum is zero. After all, no matter how many terms we compute, the partial sum will be zero. Similarly, if the terms get smaller and smaller "fast enough" that the partial sum never exceeds some particular value, surely we can say the overall sum never exceeds that value:

$$\frac{1}{10} + \frac{1}{100} + \frac{1}{1000} + \cdots < 1$$

We're on the right track, but this is not rigorous enough to constitute a formalization. In fact, formalizing this notion is very tricky, and took generations of the world's brightest mathematicians to nail down. The formalization we use today is called an epsilon-delta limit and in the specific case of infinite limits can be defined like this:

Given a value \(L\): if for all \(\epsilon > 0\), there exists a \(D\) such that for all \(x > D\), \(\lvert f(x) - L \rvert < \epsilon\); then we say that \(L\) is the limit of \(f(x)\) as \(x\) approaches infinity, and we write this:

$$\lim_{x \to \infty} f(x) = L$$

A mouthful, to be sure; I told you it was tricky! But what does it mean? It just means that, while the partial sum of the first \(n\) terms may never equal \(L\) for any \(n\), we can get as close as we want to \(L\) by taking the partial sum of enough terms.

Equipped with this definition of limits, we can formalize infinite sums in terms of finite sums:

$$\sum_{i=0}^\infty g(i) = \lim_{n \to \infty} \sum_{i=0}^n g(i)$$

Now, there's a very important property to note about this formalization: while we could directly compute finite sums by "plugging and chugging," we can no longer do this with infinite sums. A limit is not the sort of arithmetic expression you can compute, not in general at least. It's a more abstract entity, a statement that there's some number that satisfies the epsilon-delta definition above; it's up to you as a mathematician to find that number4 (if it exists at all!) and prove that it is indeed a limit.

Putting it all together

Now that we have a formalization of infinite sums, let's re-state our definition of \(f\), the function we plan to use to find the denotation of a decimal expansion:

$$f(s) = \sum_{i=0}^{\infty} \frac{s(i)}{10^{i+1}}$$

Rewriting this in terms of a limit gives:

$$f(s) = \lim_{n \to \infty} \sum_{i=0}^n \frac{s(i)}{10^{i+1}}$$

Let's go ahead and plug in \(0.\overline{999}\); it's about time:

$$f(0.\overline{999}) = \lim_{n \to \infty} \sum_{i=0}^n \frac{9}{10^{i+1}} \tag{7}\label{eq7}$$

As mentioned above, we can't just plug and chug and expect to get a number out of this equation; we need to provide a guess. All things considered, I figure \(1\) is a reasonable place to start, don't you?

$$L = 1$$

Now we need to prove that this is in fact a limit for equation \(\eqref{eq7}\). Remember that this is the property we need to prove5:

$$\forall (\epsilon > 0). \exists D. \forall (x > D). \left\lvert \left(\sum_{i=0}^x \frac{9}{10^{i+1}}\right) - 1 \right\rvert < \epsilon$$

So if we're given an \(\epsilon\) greater than zero, we need to provide a \(D\) that makes this statement true. \(\epsilon\) places an upper bound on the difference between the partial sum and \(L\), so we need to figure out what value of \(n\) yields a sufficiently small difference for that \(\epsilon\). Before we do that, though, let's extract the difference expression and rearrange some signs to make our work a little easier:

$$\forall (\epsilon > 0). \exists D. \forall (x > D). \lvert -\Delta(x) \rvert < \epsilon$$
$$\Delta(x) = 1 - \sum_{i=0}^x \frac{9}{10^{i+1}}$$

This expression is going to be a pain to work with, so let's see if we can simplify it. Take a look at the inner sum; it looks suspiciously like our denotation for finite decimal expansions. In fact, that's exactly what it is: it is the decimal expansion for \(x + 1\) copies of the numeral \(9\). We should expect this inner sum, then, to expand to \(0.9\), \(0.99\), \(0.999\), etc. \(\Delta(x)\) therefore should expand to \(0.1\), \(0.01\), \(0.001\), etc. The general pattern here is:

$$\Delta(x) = \frac{1}{10^{x+1}}$$

Let's prove this by induction:

If \(x = 0\), then:

$$\begin{aligned} \Delta(x) &= 1 - \sum_{i=0}^x \frac{9}{10^{i+1}} \\ &= 1 - \sum_{i=0}^0 \frac{9}{10^{i+1}} \\ &= 1 - \frac{9}{10^{0+1}} \\ &= \frac{10}{10} - \frac{9}{10} \\ &= \frac{1}{10} \\ &= \frac{1}{10^{0 + 1}} \\ &= \frac{1}{10^{x + 1}} \\ \end{aligned}$$

If \(\Delta(x) = \frac{1}{10^{x + 1}}\), then:

$$\begin{aligned} \Delta(x+1) &= 1 - \sum_{i=0}^{x+1} \frac{9}{10^{i+1}} \\ &= 1 - \left(\frac{9}{10^{x+1+1}} + \sum_{i=0}^{x} \frac{9}{10^{i+1}} \right) \\ &= \left( 1 - \sum_{i=0}^{x} \frac{9}{10^{i+1}} \right) - \frac{9}{10^{x+1+1}} \\ &= \Delta(x) - \frac{9}{10^{x+1+1}} \\ &= \frac{1}{10^{x + 1}} - \frac{9}{10^{x+1+1}} \\ &= \frac{10}{10} \cdot \frac{1}{10^{x + 1}} - \frac{9}{10^{x+1+1}} \\ &= \frac{10}{10^{x + 1 + 1}} - \frac{9}{10^{x+1+1}} \\ &= \frac{1}{10^{x + 1 + 1}} \\ \end{aligned}$$

Q.E.D.6

Wow, that was a lot of symbol manipulation! Let's take a breath and take stock of where we are. We've rewritten things substantially, so let's pull it all back together. The property we need to prove is:

$$\forall (\epsilon > 0). \exists D. \forall (x > D). \lvert -\Delta(x) \rvert < \epsilon$$

which we can now rewrite as:

$$\forall (\epsilon > 0). \exists D. \forall (x > D). \lvert -\frac{1}{10^{x+1}} \rvert < \epsilon$$

Tidying up the signs gives us:

$$\forall (\epsilon > 0). \exists D. \forall (x > D). \frac{1}{10^{x+1}} < \epsilon$$

Let's figure out now how we're going to choose \(D\) for a given \(\epsilon\). \(D\) will constrain \(x\), so we need to figure out which values of \(x\) will work for \(\epsilon\). We can do that with some simple algebra, taking care to invert the inequality where necessary:

$$\begin{align} \frac{1}{10^{x+1}} &< \epsilon \\ 10^{x+1} &> \frac{1}{\epsilon} \\ x+1 &> \log_{10} \frac{1}{\epsilon} \\ x &> - \log_{10} \epsilon - 1 \\ \end{align}$$

We can simply use the right-hand side of this equation as our choice of \(D\):

$$D = - \log_{10} \epsilon - 1$$

And that's it! We've proved that \(f(0.\overline{999}) = 1\). And if we take a small leap of faith and accept that our choice of formalization for the denotation of decimal expansions is in fact the correct one, we've therefore proved that \(0.\overline{999} = 1\).

What's wrong with the wrong arguments?

That was an awful lot of work to go through for something I said wasn't that interesting. But now that we know what a (semi-)rigorous argument about equation \(\eqref{eq1}\) looks like, we can get to the interesting question: what's so wrong about the "wrong" arguments, anyway?

Lets start with argument \(\eqref{eq4}\). To refresh our memory, the argument says:

"\(0.\overline{999}\) approaches but never reaches \(1\)."

This is actually almost right. There is a mathematical object in play that approaches but never reaches \(1\), and that is the partial sum inside of our limit. The problem, though, is that \(0.\overline{999}\) does not refer to this mathematical object; it refers to the limit itself. The limit does not approach or reach anything; the limit is the thing being approached, namely \(1\).

How about argument \(\eqref{eq5}\)?

"\(0.\overline{999}\) is infinitesimally smaller than \(1\); the difference is \(0.\overline{000}1\)."

To be perfectly honest, I do not know enough about infinitesimals to say for sure whether this makes any sense. Certainly it does not make sense within the normal framework of non-transfinite ordinals. Recall that we formalized sequences in terms of functions with domain \(\mathbb{N}\). There simply is no affordance in this formalization for tacking things onto the end of infinite sequences; what index would they take? But who knows, maybe if you extend sequences over transfinite ordinals this can be made to work.

What's wrong with the right arguments?

The "right" arguments are basically correct, but I think unsatisfying. They feel like parlor tricks, like someone has just pulled a close-up magic trick on you. They are based on manipulating decimal representations in ways that really need to be justified if you aren't coming to the table with a formalism for decimal representations firmly in mind.

I think the "right" arguments reflect something about the way we teach mathematics in primary and secondary school. We do not give students basic foundations for the material we give them, and we rarely justify our choice of material to focus on. Instead, we give students opaque formulas and laws to memorize by rote. We teach students the distributive property, but we rarely teach them why it holds.

Now should we make eighth-graders sit through the equivalent of an undergraduate introductory course on advanced mathematics? Should we teach them Peano's axioms and induction and limits? Probably not. But I think we could do a better job explaining to students—that is to say, everyone who will not eventually go on to get a degree in mathematics—where the boundaries lie between formalism and shorthand, why we draw those boundaries, and the limitations of arguments by symbol manipulation.


  1. This isn't quite correct, since division is still not defined on a rational denominator of zero. This explanation captures the essence of rational numbers, though. 

  2. If we want to prove a property for some \(n\), we embed a precondition in the predicate, e.g. "if \(n\) is greater than two and prime, then \(n\) is odd." 

  3. The re-use of \(f\) to name this function is justified by the fact that we can extend finite sequences to return \(0\) for indices greater than or equal to \(n\) and the math still shakes out. 

  4. What kind of number? Well, our finite sums yielded rational numbers, but the limit of an infinite sum over rational numbers may be irrational—in fact, that's one way to construct the reals! 

  5. We're actually playing a bit fast and loose with the precise definition of a limit. Strictly speaking, we should specify that \(\epsilon \in \mathbb{R}\), \(D \in \mathbb{R}\), and \(x \in \mathbb{N}\). This last constraint is especially important, because the function we're taking the limit of is only defined on \(\mathbb{N}\), and our choice of \(D\) will not be sufficient to constrain \(x\) to that domain. In fact, we really should be constraining \(D\) to \(\mathbb{N}\), but we're proving a strictly stronger property for the sake of brevity. 

  6. A highfalutin' way of saying "the proof is over now." 

social