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 rational 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:
- \(0\) is a natural number.
- 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\). 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 formula:
$$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:
- If \(n = 0\), then \(\sum_{i=0}^{n} g(i) = g(0)\).
- 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 number (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 prove:
$$\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.
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.